题目:
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)
Java AC代码:
List<String> res = new ArrayList<String>();
public List<String> restoreIpAddresses(String s) {
dfs(1, s, "");
return res;
}
public void dfs(int count, String left, String cur) {
if (count < 5 && count > 1) {
cur = cur + ".";
}else if (count == 5) {
res.add(cur);
return;
}
for (int i = 1; i <= 3 && i <= left.length(); i++) {
if(left.substring(0, i).startsWith("0") && !left.substring(0, i).equals("0")){
continue;
}
int temp = Integer.valueOf(left.substring(0, i));
if (temp >= 0 && temp <= 255
&& left.substring(i).length() >= (4 - count)
&& left.substring(i).length() <= 3 * (4 - count)) {
cur += left.substring(0, i);
dfs(count + 1, left.substring(i), cur);
cur = cur.substring(0, cur.length() - i);
}
}
}