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 {
private ArrayList<String> result = new ArrayList<String>();
private int count = 0;
private String r = new String("");
public ArrayList<String> restoreIpAddresses(String s) {
if(s == null){
return result;
}
else if(s.length() == 0)
return result;
else
{
AddressesHelper(s);
return result;
}
}
public ArrayList<String> AddressesHelper(String s) {
if(count == 4 && s.length() == 0)
{
String rr = new String(r);
result.add(rr.substring(0, rr.length() - 1));
return null;
}
else if(count == 4 || s.length() == 0)
return null;
else{
for(int i = 0; i < 3; i ++){
if(i + 1 < s.length() + 1){
if(Integer.valueOf(s.substring(0, i + 1)) <= 255 && Integer.valueOf(s.substring(0, i + 1)) >= 0){
if(s.charAt(0) == '0' && i != 0)
continue;
int l = r.length();
r = r + s.substring(0, i + 1) + ".";
count ++;
AddressesHelper(s.substring(i + 1));
count --;
r = r.substring(0, l);
}
}
}
}
return null;
}
}