一:题目
二:上码
class Solution {
private List<String> ans = new ArrayList<>();
public boolean isValid(String str,int start,int end) {
if (start > end) return false;
if (str.charAt(start) == '0' && start != end) return false;
int num = 0;
for (int i = start; i <= end; i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '9') return false;
num = num * 10 + (str.charAt(i)-'0');
if (num > 255) return false;
}
return true;
}
public void getAns(String str,int st,int point) {
if (point == 3) {
if (isValid(str,st,str.length()-1)) {
System.out.println(str);
ans.add(str);
}
return ;
}
for (int i = st; i < str.length(); i++) {
if (isValid(str,st,i)) {
str = str.substring(0,i+1) + "." + str.substring(i+1);
point++;
getAns(str,i+2,point);
point--;
str = str.substring(0,i+1) + str.substring(i+2);
} else {
break;
}
}
}
public List<String> restoreIpAddresses(String s) {
getAns(s,0,0);
return ans;
}
}