题意:
思路:
回溯,虽然大体能写 但是没有用的中间的List,所以无法得出结果
class Solution {
List<String> list=new ArrayList<>();
public List<String> restoreIpAddresses(String s) {
//涉及到分段———— 固定四段
//保存的数值[0 255]
//长度 小于等于3
//不能以0开头
//用字符串切割进行保存 而不是单个单个保存
List<String> tem=new ArrayList<>();
dfs(s,0,tem);
return list;
}
private void dfs(String s,int start,List<String> tem){
//回溯返回条件
if(start==s.length() && tem.size()==4){
StringBuffer str=new StringBuffer();
for(int i=0;i<tem.size();i++){
str.append(tem.get(i));
//list.add(tem.get(i));
if(i!=tem.size()-1) str.append(".");
}
list.add(str.toString());
return;
}else{
if(tem.size()>=4) return;//因为一个ip最多12位 整数最大为255 所以不可能超过4段
for(int i=start; i<s.length() && i<start+3 ;i++){
//保存合法数字
//用字符串截取功能
String str1=s.substring(start,i+1);//截取1到3位都可
if(str1.charAt(0)=='0' && str1.length()>1) break;//除 0 外首位不得为0
//判断大小 Integer.parseInt();
//int num=Integer.parseInt(str1);
if(Integer.parseInt(str1)>=0 && Integer.parseInt(str1)<=255){
tem.add(str1);
dfs(s,i+1,tem);
tem.remove(tem.size()-1);
}
}
}
}
}