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)
Solution:
public class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> ans = new ArrayList<>();
int n = s.length();
for(int i=1; i<=3 && i<=n-1; i++){
String part1 = s.substring(0,i);
if(!check(part1)) break;
for(int j=i+1; j<=i+3 && j<=n-2; j++){
String part2 = s.substring(i,j);
if(!check(part2)) break;
for(int k=j+1; k<=j+3 && k<=n-1; k++){
String part3 = s.substring(j,k);
if(!check(part3)) break;
String part4 = s.substring(k);
if(!check(part4)) continue;
ans.add(part1+"."+part2+"."+part3+"."+part4);
}
}
}
return ans;
}
public boolean check(String s){
if(s.length()>3) return false;
if(s.length()!=1 && s.charAt(0)=='0') return false;
int value = Integer.valueOf(s);
return value<=255;
}
}