题解 | #验证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"; } if(isIPv6(IP)){ return "IPv6"; } return "Neither"; } public boolean isIPv4(String IP){ // 判断有无字符. if(IP.indexOf('.') == -1){ return false; } // 按.分割 String[] s = IP.split("\\.",-1); // 判断分割后是否为4组 if(s.length != 4){ return false; } for(int i = 0; i < s.length;i++){ // 判断分后后位数及不能有前缀0 if(s[i].length() < 1 || s[i].length() > 3 || (s[i].length() != 1 && s[i].charAt(0) == '0')){ return false; } // 分隔后数值比较 int num = 0; for(int j = 0;j < s[i].length();j++){ char c = s[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 isIPv6(String IP){ // 判断是否有字符: if(IP.indexOf(":") == -1){ return false; } // 按字符:分割 String[] s = IP.split(":",-1); // 判断分割后是否为8组 if(s.length != 8){ return false; } for(int i = 0;i < s.length;i++){ // 分割结果位数判断 if(s[i].length() < 1 || 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; } }