题解 | #合法IP#

  1. 这道题描述不是很清楚,示例中的情况只属于提交问题中的一小部分,提交问题中会有‘+’、‘03’或者空等情况。 此算法需要注意:Integer temp = Integer.parseInt(num); 如果num是“+12”此类数据,parseInt转型的时候会把+ - 自动去除。 需要使用正则表达式判断字符是否合法。
  2.  如果将num换成如下方式处理,则多了一层循环;如果时间复杂度是O(n),不可取;
 for(Character ch : element.toCharArray()){ //每段的字符必须是数字
     if(!Character.isDigit(ch)){
         result = "NO";
         break;
     }
 }

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.next();
            //System.out.println("str=" + str);

            String[] nums = str.split("\\.");
            if (nums.length != 4) {
                System.out.println("NO");
                return;
            }

            for (String num : nums) {
                if(Objects.isNull(num) || "".equals(num) ){
                    System.out.println("NO");
                    return;
                }

                if (num.length() > 1 && num.charAt(0) == '0'){
                    System.out.println("NO");
                    return;
                }

                if (num.substring(0, 1).matches("[^0-9]")){
                    System.out.println("NO");
                    return;
                }

                try {
                    Integer temp = Integer.parseInt(num);
                    if(temp < 0 || temp > 255){
                        System.out.println("NO");
                        return;
                    }
                } catch (NumberFormatException e) {
                    System.out.println("NO");
                    return;
                }
            }

            System.out.println("YES");
        }
    }
}


全部评论

相关推荐

喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务