题解 | #合法IP#
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
package main import ( "fmt" "strconv" "strings" ) func main() { ip:="" for{ _,err:=fmt.Scan(&ip) if err!=nil { break } if isValid(ip) { fmt.Println("YES") }else{ fmt.Println("NO") } } } func isValid(ip string) bool{ // 切分 split:=strings.Split(ip, ".") // 切分后的长度必须为4 if len(split)!=4 { return false } // 转化成数字,在java转化为数字时,01也被认为1,但01是对于ip地址的格式而言是错误的. // go用Atoi时,和java很像,+1会被认作1,01会被认作1 for _,str:=range split { // 确定首位数字不为0,其它字符为数字 for i:=0;i<len(str);i++ { if len(str)>=2&&str[0]=='0'{ return false; } //字符不能超过'0'-'9' if(str[i]>'9'||str[i]<'0'){ return false } } num,err:=strconv.Atoi(str) if(err!=nil){ println(str) return false } //数值在0-255 if num>255||num<0 { return false } // fmt.Println("num:",num) } return true }