import java.util.*; public class Solution { /** * 验证IP地址 * @param IP string字符串 一个IP地址字符串 * @return string字符串 */ public String solve (String IP) { //最后一位是 . split会忽略 if (IP.contains(".") && IP.lastIndexOf(".") != IP.length() - 1) { //是IPv4 或者 Neither boolean isOK = true; String[] ips = IP.split("\\."); if (ips.length == 4) { for (int i = 0; i < ips.length; i++) { String cur = ips[i]; if ("".equals(cur)) { isOK = false; break; } else if (cur.startsWith("0") && cur.length() > 1) { isOK = false; break; } else { if (!isInteger(cur)) { isOK = false; break; } int value = Integer.valueOf(cur); if (value < 0 || value > 255) { isOK = false; break; } } } } else { isOK = false; } if (isOK) { return "IPv4"; } else { return "Neither"; } } else if (IP.contains(":") && IP.lastIndexOf(":") != IP.length() - 1) { //是IPv6 或者 Neither boolean isOK = true; String[] ips = IP.split(":"); if (ips.length == 8) { for (int i = 0; i < ips.length; i++) { String cur = ips[i]; if ("".equals(cur)) { isOK = false; break; } else if (cur.length() > 4 || !isLegal(cur)) { isOK = false; break; } } } else { isOK = false; } if (isOK) { return "IPv6"; } else { return "Neither"; } } else { return "Neither"; } } private boolean isInteger(String s) { char[] chars = s.toCharArray(); for (int i = 0; i < chars.length ; i++) { char cur = chars[i]; if (cur > '9' || cur < '0') { return false; } } return true; } private boolean isLegal(String s) { char[] chars = s.toCharArray(); for (int i = 0; i < chars.length ; i++) { char cur = chars[i]; boolean isOk = false; if ((cur >=0 && cur <= '9') || (cur >= 'a' && cur <= 'f') || (cur >= 'A' && cur <= 'F')) { isOk = true; } if(!isOk){ return false; } } return true; } }