一、题目描述
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。
示例 1:
输入:address = “1.1.1.1”
输出:“1[.]1[.]1[.]1”
示例 2:
输入:address = “255.100.50.0”
输出:“255[.]100[.]50[.]0”
提示:
给出的 address 是一个有效的 IPv4 地址
二、题目分析
这道题是在新出题库里看到的,是一道很简单的题目
思路1:定义新的数组,循环 IP 地址的每个字符,映射到新数组,遇到 ‘.’ 符号,自动替换成 “[.]” 即可
思路2:在原来基础上改动,重新分配字符串的内存空间,多申请6个字符的空间,然后定义两个指针,分别从数组末尾和原 IP 结尾 开始往前循环遍历,移位替换即可(更倾向用 C 实现)
三、代码实现
// leetcode_1108. IP 地址无效化
// 欢迎继续优化代码
package main
import (
"fmt"
)
func main() {
fmt.Println("> ", defangIPaddr("1.1.1.2"))
}
func defangIPaddr(address string) string {
var defangAddr []byte
for _, b := range address {
if b == '.' {
defangAddr = append(defangAddr, '[', '.', ']')
} else {
defangAddr = append(defangAddr, byte(b))
}
}
return string(defangAddr)
}
运行结果:
> 1[.]1[.]1[.]2
Process finished with exit code 0
——2019-07-12——