468. 验证IP地址
示例 1:
输入:queryIP = “172.16.254.1” 输出:“IPv4” 解释:有效的 IPv4 地址,返回 “IPv4”
示例 2:
输入:queryIP = “2001:0db8:85a3:0:0:8A2E:0370:7334” 输出:“IPv6” 解释:有效的 IPv6 地址,返回 “IPv6”
示例 3:
输入:queryIP = “256.256.256.256” 输出:“Neither” 解释:既不是 IPv4 地址,又不是 IPv6 地址
提示:
queryIP 仅由英文字母,数字,字符 '.' 和 ':' 组成。
class Solution {
public String validIPAddress(String IP) {
String[] IP4Arr = IP.split("\\.",-1);
if(IP4Arr.length == 4){
return isIP4Arr(IP4Arr);
}
String[] IP6Arr = IP.split(":",-1);
if(IP6Arr.length == 8){
return isIP6Arr(IP6Arr);
}
return "Neither";
}
public String isIP4Arr(String[] IP4Arr){
for(String ip : IP4Arr){
if(ip.length() > 3 || ip.length() <= 0){
return "Neither";
}
for(int i = 0 ;i < ip.length();++i){
if(!Character.isDigit(ip.charAt(i))){
return "Neither";
}
}
int num = Integer.parseInt(ip);
if(num > 255 || String.valueOf(num).length() != ip.length()){
return "Neither";
}
}
return "IPv4";
}
public String isIP6Arr(String[] IP6Arr){
for(String ip : IP6Arr){
if(ip.length() > 4 || ip.length() <= 0){
return "Neither";
}
for(int i = 0 ;i < ip.length();++i){
char c = ip.charAt(i);
if(!Character.isDigit(c) && !( 'a' <= c && c <= 'f') && !('A' <= c && c <= 'F')){
return "Neither";
}
}
}
return "IPv6";
}
}
|