Restore IP Addresses

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;
    }
}
comments powered by Disqus