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

全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
05-28 17:15
猿辅导 Java后端日常实习 800一天
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务