java 93.恢复IP地址(#)。java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 93.恢复IP地址(#)。java相关的知识,希望对你有一定的参考价值。
public class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> ret=new ArrayList<>();
int num=0;
if(s.length()<4||s.length()>12)return ret;
char[] array=s.toCharArray();
char[] path=new char[s.length()+3];
for(int i=0;i<3;i++){
num=num*10+array[i]-'0';
if(num>255) break;
path[i]=array[i];
helper(array,path,i+1,i+1,0,ret);
if(num==0) break;
}
return ret;
}
private void helper(char [] array, char[] path, int length, int idx, int count, List<String> ret){
if(count==3){
if(idx==array.length){
ret.add(new String(path));
}
return ;
}
path[length]='.';
int num=0;
for(int i=idx;i<Math.min(idx+3,array.length);i++){
num=num*10+array[i]-'0';
if(num>255) break;
path[length+1+(i-idx)]=array[i];
helper(array,path,length+1+(i-idx)+1,i+1,count+1,ret);
if(num==0){
break;
}
}
}
}
public class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> res = new ArrayList<String>();
int len = s.length();
for(int i = 1; i<4 && i<len-2; i++){
for(int j = i+1; j<i+4 && j<len-1; j++){
for(int k = j+1; k<j+4 && k<len; k++){
String s1 = s.substring(0,i), s2 = s.substring(i,j), s3 = s.substring(j,k), s4 = s.substring(k,len);
if(isValid(s1) && isValid(s2) && isValid(s3) && isValid(s4)){
res.add(s1+"."+s2+"."+s3+"."+s4);
}
}
}
}
return res;
}
public boolean isValid(String s){
if(s.length()>3 || s.length()==0 || (s.charAt(0)=='0' && s.length()>1) || Integer.parseInt(s)>255)
return false;
return true;
}
}
以上是关于java 93.恢复IP地址(#)。java的主要内容,如果未能解决你的问题,请参考以下文章
java 93.恢复IP地址(#)。java
java 93.恢复IP地址(#)。java
java 93.恢复IP地址(#)。java
java 93.恢复IP地址(#)。java
java 93.恢复IP地址(#)。java
java 93.恢复IP地址(#)。java