LeetCode刷题实战468:验证IP地址
共 1712字,需浏览 4分钟
·
2021-12-18 11:20
示例
示例 1:
输入:IP = "172.16.254.1"
输出:"IPv4"
解释:有效的 IPv4 地址,返回 "IPv4"
示例 2:
输入:IP = "2001:0db8:85a3:0:0:8A2E:0370:7334"
输出:"IPv6"
解释:有效的 IPv6 地址,返回 "IPv6"
示例 3:
输入:IP = "256.256.256.256"
输出:"Neither"
解释:既不是 IPv4 地址,又不是 IPv6 地址
解题
class Solution {
public String validIPAddress(String IP) {
if(isIp4(IP)){return "IPv4";}
if(isIp6(IP)){return "IPv6";}
return "Neither";
}
public boolean isIp4(String ip){
ip=ip.trim();
if(ip.contains(".")){
for(int i=0;ichar c=ip.charAt(i);
if(c!='.'&&!Character.isDigit(c)){return false;}
}
String ip4[]=ip.split("\\.",-1);//-1表示末尾开头的到的叶算,跟进空字符串
if(ip4.length!=4){return false;}//ip4的是4段数
for(int i=0;i<4;i++){
int l=ip4[i].length();
if(l==0||l>3){return false;}//注意空数字,判断32位超范围
int shu=Integer.parseInt(ip4[i]);
if(shu>255||(shu<10&&l>1)||(shu<100&&l>2)){
//每个数字开头不能是0,除非就是0
return false;
}
}
}
else{return false;}
return true;
}
public boolean isIp6(String ip){
ip=ip.trim().toLowerCase();//防止大小写混用
if(ip.contains(":")){
for(int i=0;ichar c=ip.charAt(i);
if(c!=':'&&!(c>='0'&&c<='9')&&!(c>='a'&&c<='f')){
return false;
}
}
String[] ip6=ip.split("\\:",-1);
if(ip6.length!=8){return false;}
for(int i=0;i<8;i++){
//ip6要有8段
int l=ip6[i].length();
if(l==0||l>4){return false;}//if(l>4){return false;}
}
}
else{return false;}
return true;
}
}
LeetCode刷题实战462:最少移动次数使数组元素相等 II