import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return string字符串ArrayList
*/
ArrayList<String> res = new ArrayList();
public ArrayList<String> restoreIpAddresses (String s) {
backtracking(s,0,new ArrayList<Integer>(),0);
return res;
}
public void backtracking(String s,int index,ArrayList<Integer> list,int time){
if(time>3){
return;
}
if(list.size()==3){
String a = s.substring(0,list.get(0));
String b = s.substring(list.get(0),list.get(1));
String c = s.substring(list.get(1),list.get(2));
String d = s.substring(list.get(2));
if(d.equals("")||(d.charAt(0)=='0'&&(Integer.parseInt(d)!=0||d.length()>1)))
return;
if(Integer.parseInt(d)<=255)
res.add(a+"."+b+"."+c+"."+d);
}
for(int j = 1;j<=3;j++){
if(index+j>s.length())
break;
String str2 = s.substring(index,index+j);
boolean b = true;
if(str2.charAt(0)=='0'&&(Integer.parseInt(str2)!=0||str2.length()>1))
b = false;
if(b&&Integer.parseInt(str2)<=255)
{
list.add(index+j);
backtracking(s,j+index,list,time+1);
list.remove(list.size()-1);
}
}
}
}