题解 | #合法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
}