IP 地址无效化

135 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

题目描述

给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。 来源:力扣(LeetCode)

  • 示例1
输入: address = "1.1.1.1"
输出: "1[.]1[.]1[.]1
  • 示例
输入: address = "255.100.50.0"
输出: "255[.]100[.]50[.]0"
  • 给出的 address 是一个有效的 IPv4 地址

思路分析

根据题意可知,给一个IPv4的地址,在这个地址里面将“.”用“[]”给包起来;而这个IP地址给到我们的是一个字符串;要取到字符串里面的某些元素,我们第一个想到的就是数组,首先使用数组的split()方法将字符串类型的IP地址转成一个新的数组;然后将数组进行循环遍历在每次循环项是“.”的时候,把“[”放在遍历项的位置,此时的遍历项位置就会同时往后位移一步,“]”需要放在遍历项的后面,但此时数组的长度已经发生了改变,遍历项的下标也发生改变,比之前多了 1,所以“]”放的位置是此时遍历项的后面第二个位置;数组增加了两个元素,此时下次要遍历的位置应该是要加2;直至循环结束,最后得到的数组就是我们想要的结果,不过它是个数组类型的数据,我们可以使用数组的方法join()方法将数组转成字符串,而现在得到的字符串才是我们想要得到的最终结果。

AC代码

let address = "1.1.1.1";
function solution(str) {
    let arr = address.split("");
    for(let i=0; i<arr.length; i++) {
        if(arr[i] === '.') {
            arr.splice(i, 0, '[');
            arr.splice(i+2, 0, ']');
            i+=2
        }
    }
    let newStr = arr.join('');
    console.log(newStr);
}
solution(address)

总结

这道题目是力扣上面的简单类型题目,解题方式很多种,这里列举了一种;这种方法简单暴力,直接在原数组上面修改。