题解 | #合法IP#

合法IP

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (null != (s = br.readLine())) {
            int pointNum = 0;
            if (s.length() > 15) {
                System.out.println("NO");
                return;
            } else {
                if (s.startsWith(".") || s.endsWith(".")){
                    System.out.println("NO");
                    return;
                }
                int start = -1;
                for (int i = 0; i < s.length(); i++) {
                    if (s.charAt(i) == '.' || i == s.length() - 1) {
                        if (s.charAt(i) == '.') pointNum++;
                        if (i == s.length() - 1) i++;
                        if (isValid(s, start + 1, i - 1) && pointNum <= 3) {
                            start = i;
                        } else {
                            System.out.println("NO");
                            return;
                        }
                    }
                }
            }
            if (pointNum == 3){
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }
    // 判断字符是否合法
    public static boolean isValid(String s, int start, int end) {
        if (s.charAt(start) == '0' && start != end || start > end) {
            return false;
        }
        int num = 0;
        for (int i = start; i <= end; i++) {
            if (s.charAt(i) < '0' || s.charAt(i) > '9') return false;
            num = num * 10 + s.charAt(i) - '0';
        }
        if (num > 255) {
            return false;
        }
        return true;
    }
}
全部评论

相关推荐

群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务