6/13/2014

121. Restore IP Addresses

public class Solution {
    public ArrayList<String> restoreIpAddresses(String s) {
        ArrayList<String> res = new ArrayList<String> ();
       
        if (s.length()>12 || s.length()<4) return res;
       
        dfs(s, res, "", 0);
       
        return res;
    }
   
    public void dfs(String s, ArrayList<String> res, String temp, int count) {
        if (count==3 && isValid(s)) {
            res.add(temp+s);
            return;
        }
       
        for (int i=1; i<4&&i<s.length(); i++) {
            String substr = s.substring(0, i);
            if (isValid(substr)) dfs(s.substring(i), res, temp+substr+".", count+1);
        }
    }
   
    public boolean isValid(String s) {
        if (s.charAt(0)=='0') return s.equals("0");
        int num = Integer.parseInt(s);
        return num<=255 && num>=0;
    }
}

没有评论:

发表评论