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

全部评论

相关推荐

完美的潜伏者许愿简历...:隐藏信息被你提取出来了,暗示,这就是暗示
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务