解题思路:
回溯
提交代码:回溯
class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> ans=new ArrayList<String>();
if(s.length()<4) return ans;
String base="";
findIpAddresses(0,s,1,base,ans);
return ans;
}
public void findIpAddresses(int p,String s,int segment,
String base,List<String> ans) {
if(segment==4) {
if(p<s.length()-3||p>=s.length()) return;
String tmp=s.substring(p);
if(tmp.length()!=1&&tmp.charAt(0)=='0') return;
if(tmp.length()==3&&tmp.compareTo("255")>0) return;
ans.add(base+tmp);
}
for(int i=1;i<=3;i++) {
if(p+i>s.length()) break;
String tmp=s.substring(p, p+i);
if(tmp.length()!=1&&tmp.charAt(0)=='0') continue;
if(tmp.length()==3&&tmp.compareTo("255")>0) break;
findIpAddresses(p+i,s,segment+1,base+tmp+".",ans);
}
}
}
运行结果: