一、題目描述
給你一個有效的 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——