--- tags: golang, 鐵人30天, leetcode --- # golang 鐵人賽 自我挑戰賽 leetcode 30 天 第5天 defanging-an-ip-address ## 題目解讀: ### 題目來源: [defanging-an-ip-address](https://leetcode.com/problems/defanging-an-ip-address/) ### 原文: Given a valid (IPv4) IP address, return a defanged version of that IP address. A defanged IP address replaces every period "." with "[.]". ### 解讀: 給定一個合法的ip字串 address 舉例來說: "127.0.0.1" 返回一個字串把"."代換為"[.]" 舉例來說: "127.0.0.1" => "127[.]0[.]0[.]1" ## 初步解法: ### 初步觀察: 首先只需要先把 輸入的address 對 "." 做split 然後在用"[.]" join為回去 ### 初步設計: Given a valid ipv4 string address set a empty string formatedStr = "" set splitedAdrs = address.split(".") formatedStr = splitedAdrs.join("[.]") ## 遇到的困難 ### 題目上理解的問題 因為英文不是筆者母語 所以在題意解讀上 容易被英文用詞解讀給搞模糊 ### pseudo code撰寫 一開始不習慣把pseudo code寫下來 因此 不太容易把自己的code做解析 ### golang table driven test不熟 對於table driven test還不太熟析 所以對於寫test還是耗費不少時間 ## 我的github source code [defangIPaddr.go](https://github.com/yuanyu90221/defang-an-ip-address/blob/master/defangIPaddr.go) ```golang package defang_ip import "strings" func defangIPaddr(address string) string { ret := "" splitedAddr := strings.Split(address, ".") ret = strings.Join(splitedAddr, "[.]") return ret } ``` ## 測資的撰寫 ```golang package defang_ip import "testing" func Test_defangIPaddr(t *testing.T) { type args struct { address string } tests := []struct { name string args args want string }{ { name: "Example1", args: args{ address: "1.1.1.1", }, want: "1[.]1[.]1[.]1", }, { name: "Example2", args: args{ address: "255.100.50.0", }, want: "255[.]100[.]50[.]0", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := defangIPaddr(tt.args.address); got != tt.want { t.Errorf("defangIPaddr() = %v, want %v", got, tt.want) } }) } } ``` ## 參考文章 [golang test](https://ithelp.ithome.com.tw/articles/10204692)