import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 验证IP地址
     * @param IP string字符串 一个IP地址字符串
     * @return string字符串
     */
    public String solve (String IP) {
        System.out.println(IP);
        String[] ipv4 = IP.split("\\.");
        if (ipv4.length == 4) {
            for (String s : ipv4) {
                if (s.length() < 1) {
                    return "Neither";
                }
                if (s.startsWith("0") && s.length() > 1) {
                    return "Neither";
                }
                for (char c : s.toCharArray()) {
                    if (!Character.isDigit(c)) {
                        return "Neither";
                    }
                }
                if (s.length() > 3 || Integer.parseInt(s) > 255) {
                    return "Neither";
                }
            }
            return "IPv4";
        }
        String[] ipv6 = IP.split(":", -1);
        if (ipv6.length == 8) {
            for (String s : ipv6) {
                if (s.length() < 1 || s.length() > 4) {
                    return "Neither";
                }
                for (char c : s.toCharArray()) {
                    if (Character.isAlphabetic(c) && Character.toLowerCase(c) > 'f') {
                        return "Neither";
                    }
                }
            }
            return "IPv6";
        }
        return "Neither";
    }
}

有两个坑需要注意一下:

  • split(".")无效,需要split("\\.")
  • split(".")如法分割1.1.1.1.或者1:1:1:1:这样最后还有一个分隔符的情况,需要split(".", -1),传入参数-1才行