题解 | #验证IP地址#

验证IP地址

https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880

import java.util.*;

public class Solution {

    public String solve (String IP) {
        if (is_ipv4(IP) == true) {
            return "IPv4";
        } else if (is_ipv6(IP) == true) {
            return "IPv6";
        }
        return "Neither";
    }

    public boolean is_ipv4(String IP) {
        if (IP.indexOf('.') == -1) {
            return false;
        }
        String ipv4[] = IP.split("\\.");
        if (ipv4.length != 4) {
            return false;
        }
        for (int i = 0; i < ipv4.length; i++) {
            if (ipv4[i].length() == 0) {
                return false; //不可缺省
            }
            if (ipv4[i].length() < 0 || ipv4[i].length() > 3 || (ipv4[i].charAt(0) == '0' &&
                    ipv4[i].length() != 1)) {
                return false;
            }
            int num = 0;
            //遍历每个分割的字符串,必须为数字
            for (int j = 0; j < ipv4[i].length(); j++) {
                char c = ipv4[i].charAt(j);
                if (c < '0' || c > '9') {
                    return false;
                }
                num = num * 10 + (int) (c - '0');
                if (num < 0 || num > 255) {
                    return false;
                }
            }
        }
        return true;
    }

    public boolean is_ipv6(String IP) {
        if (IP.indexOf(':') == -1) {
            return false;
        }
        String s[] = IP.split(":", -1);
        if (s.length != 8) {
            return false;
        }
        for (int i = 0; i < s.length; i++) {
            if (s[i].length() == 0 || s[i].length() > 4) {
                return false;
            }
            for (int j = 0; j < s[i].length(); j++) {
                char c = s[i].charAt(j);
                boolean expr = ((c>='0' && c<='9') || (c>='a' && c<='f') || (c>='A' && c<='F'));
                if(!expr){
                    return false;
                }

            }

        }
        return true;
    }
}

全部评论

相关推荐

11-28 16:13
门头沟学院 Java
程序员小白条:年底了,都差不多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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