题解 | #验证IP地址#
验证IP地址
https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 验证IP地址 * @param IP string字符串 一个IP地址字符串 * @return string字符串 */ public String solve (String IP) { // write code here if (isIpv4(IP)) return "IPv4"; else if (isIpv6(IP)) return "IPv6"; return "Neither"; } public boolean isIpv4(String IP) { try { if (IP == null || "".equals(IP)) { return false; } String[] ipv4Array = IP.split("\\."); if (ipv4Array.length != 4) { return false; } for (int i = 0; i < ipv4Array.length; i++) { int parseInt = Integer.parseInt(ipv4Array[i]); if (parseInt > 255) { return false; } //不是零开头 if (!ipv4Array[i].equals(String.valueOf(parseInt))) { return false; } } return true; } catch (NumberFormatException e) { return false; } } public boolean isIpv6(String IP) { try { if (IP == null || "".equals(IP)) { return false; } if (IP.indexOf("::") > 0) { return false; } //这个IP.split(":",-1); 坑死我了,我一直写的是IP.split(":"); String[] ipv6Array = IP.split("\\:",-1); if (ipv6Array.length != 8) { return false; } for (int i = 0; i < ipv6Array.length; i++) { if (ipv6Array[i].length() > 4 || ipv6Array[i].length() == 0) { return false; } if (!isValidString(ipv6Array[i])) { return false; } } return true; } catch (NumberFormatException e) { return false; } } public boolean isValidString(String input) { return !input.isEmpty() && input.matches("[0-9A-Fa-f]+"); } }