public class Solution {
/**
*
* @param s string字符串
* @return string字符串ArrayList
*/
public ArrayList<String> restoreIpAddresses (String s) {
// write code here
ArrayList<String> result = new ArrayList<>();
dfs(0,0,new StringBuilder(), result, s);
return result;
}
private void dfs(int index, int depth, StringBuilder ip, ArrayList<String> result,String s){
int length = ip.length();
if(index == s.length()){
if(depth == 4){
//最后一个 将.删除
ip.deleteCharAt(ip.length() - 1);
result.add(ip.toString());
}
}
for(int i = 1;i<= 3;i++){
if(i + index > s.length()){
break;
}
//截取字符串
int num = Integer.parseInt(s.substring(index, index + i));
//非法 大于255 的,以及如果是两个0,转换后就是0不等于长度i 相当于自己删除了一个数字,没有xx.00.这种
if(num > 255 || String.valueOf(num).length() != i){
continue;
}
ip.append(num).append(".");
//固定了第0个,下一次就是固定第1个去
dfs(index+i,depth + 1, ip, result, s);
ip.setLength(length);
}
}
}