题目要求
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given "25525511135",
return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)
返回字符串能够组成的所有IP地址。
思路与代码
IP地址由0/1位二进制数字构成,一共分为4个区间,每个区间8位。因此每个区间的值转化到十进制为0~255。那么我们只要划分出这四个区间,然后判断这四个区间的值是否符合标准即可。
public List<String> restoreIpAddresses(String s) {
List<String> result = new ArrayList<String>();
int length = s.length();
if(s==null || s.length()<4 || s.length()>12) return result;
for(int i = 1 ; i<4&&i<length-2 ; i++){
for(int j = i+1 ; j<i+4&&j<length-1 ; j++){
for(int k = j+1 ; k<j+4 && k<length ; k++){
String s1 = s.substring(0,i),
s2 = s.substring(i,j),
s3 = s.substring(j,k),
s4 = s.substring(k);
if(isValid(s1) && isValid(s2)&& isValid(s3) && isValid(s4)){
result.add(s1+"."+s2+"."+s3+"."+s4);
}
}
}
}
return result;
}
private boolean isValid(String s){
if(s.length()!=1 && s.startsWith("0")) return false;
if(Integer.parseInt(s)>255) return false;
return true;
}
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。