题解 | #验证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) {
//声明:参考别人的代码复现的!!!
//用字符串split("\\.", -1);取字符串字串,“\\.”转义字符要加双斜杠,-1是头尾为空也要取空值为子串
return isValidIPv4(IP) ? "IPv4" : (isValidIPv6(IP) ? "IPv6" : "Neither");
}
private boolean isValidIPv4(String IP) {
String[] nums = IP.split("\\.", -1);
if (nums.length != 4) return false;
for (String num : nums) {
if (num.length() > 1 && num.startsWith("0")) return false;
try {
int val = Integer.parseInt(num);
if (!(val >= 0 && val <= 255)) return false;
} catch (NumberFormatException numberFormatException) {
return false;
}
}
return true;
}
private boolean isValidIPv6(String IP) {
String[] strs = IP.split(":", -1);
if (strs.length != 8) {
return false;
}
for (String str : strs) {
if (str.length() > 4 || str.length() == 0) {
return false;
}
try {
int val = Integer.parseInt(str, 16);
} catch (NumberFormatException numberFormatException) {
return false;
}
}
return true;
}
}
查看4道真题和解析