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)
直观的把“.”插进去就好了,for循环加判断是否ip合理即可
import java.util.ArrayList;
import java.util.List;
public class Solution {
List<String> rst = new ArrayList<String>();
public List<String> restoreIpAddresses(String s) {
for(int i=0; i<4 && i<s.length(); i++) {
for(int j=i+1; j<i+5 && j<s.length(); j++) {
for(int k=j+1; k<j+5 && k<s.length(); k++) {
String s1 = s.substring(0, i);
String s2 = s.substring(i, j);
String s3 = s.substring(j, k);
String s4 = s.substring(k);
if(isValide(s1) && isValide(s2) && isValide(s3) && isValide(s4)) {
rst.add(s1+"."+s2+"."+s3+"."+s4);
}
}
}
}
return rst;
}
private boolean isValide(String s) {
if(s.length() == 0) return false;
if(s.length() == 1) return true;
if(s.length() == 2) return s.charAt(0) != '0';
if(s.length() == 3) {
int tmp = Integer.parseInt(s);
return tmp >= 100 && tmp <= 255;
}
return false;
}
}