题解 | #合法IP#

合法IP

http://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9

虽然测试案例里都是+1.255.255.255用Integer.ParseInt可以跑
如果不判断每个字段的每个字符是不是数字,就会导致[][]1.255.255.255用Integer.ParseInt跑不了
import java.util.*;
public class Main{
    
    public static void main(String[] args){
        
        Scanner in = new Scanner(System.in);
        
        while(in.hasNext()){
            String str = in.next();
            String[] nums = str.split("\\.", -1);
            String result = "YES";
            
            if(nums.length == 4){
                
                    for(String element : nums) { //遍历每个元素,合不合法

                    if(element.length() == 0 || element.length() > 3){ //每段长度等于0,或者长度大于4,都不合法
                        result = "NO";
                        break;
                    }

                    for(Character ch : element.toCharArray()){ //每段的字符必须是数字
                        if(!Character.isDigit(ch)){
                            result = "NO";
                            break;
                        }
                    }

                    if(element.charAt(0) == '0' && element.length() != 1){ //除0以外,所有0开头的字符串都是非法的
                        result = "NO";
                        break;
                    }



                    if(Integer.parseInt(element) > 255){ //每段对应的数大于255,也是非法的
                        result = "NO";
                        break;
                    }

                }
            }else{
                result = "NO";
            }
            System.out.println(result);
        }
        
    }
}

全部评论
判断字符是否为数字的逻辑有误,当用例为1+.2.3.8时会报错,因为break只能打断内循环,不能打断外循环。正确做法应该把内循环的result定义为"end",然后break到外循环,马上判断res是否为"end",若为end,继续break出外层循环,直接返回"NO"。
点赞 回复 分享
发布于 07-21 15:07 湖北
稳!
点赞 回复 分享
发布于 2023-02-18 00:43 广东

相关推荐

不愿透露姓名的神秘牛友
09-11 10:14
点赞 评论 收藏
分享
wish233:只是说使用xxx实现什么什么,没有原因,没有数据量化,就没有亮点。比如说第一个项目为什么要使用MongoDB?相比MySQL解决了什么问题,有什么好处?还有第二个项目用RestTemplate,既然引入了SpringCloud,你也写了自己的专业技能是能用里面的组件,那你为什么不用feign?还有就是你用的这些框架写上去的格式尽量统一一下,一会写spring,一会又是Spring,不太舒服
点赞 评论 收藏
分享
09-11 10:30
安徽大学 Java
难度不算太高
投递美的集团等公司10个岗位
点赞 评论 收藏
分享
评论
22
2
分享

创作者周榜

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