Total Accepted: 7130 Total Submissions: 35672
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)
public class Solution {
public ArrayList<String> restoreIpAddresses(String s) {
ArrayList<String> list = new ArrayList<String>();
dfs(s, list, "", 1);
return list;
}
public void dfs(String s, ArrayList<String> list, String path, int level) {
if (level > 4 && s.length() == 0) list.add(path);
else if (level <= 4){
int min = s.length() < 3 ? s.length() : 3;
for (int i = 0; i < min; i++) {
String strIP = s.substring(0, i + 1);
String str = path + Integer.parseInt(strIP);
if (level < 4) str += ".";
if (check(strIP))
dfs(s.substring(i + 1, s.length()), list, str, level + 1);
}
}
}
public boolean check(String str) {
int ip = Integer.parseInt(str);
if (ip < 0 || ip > 255) return false;
if (str.length() == 2 && ip < 10) return false;
if (str.length() == 3 && ip < 100) return false;
return true;
}
}