class Solution {
private List<String> res = new ArrayList<>();
public List<String> restoreIpAddresses(String s) {
if(s.length() < 4) return res;
dfs(new StringBuilder(), s, 0, 0);
return res;
}
public void dfs(StringBuilder sb, String s,int start,int point){
if(point > 4) return;
if(point == 4 && start == s.length()) {
res.add(sb.toString().substring(1));
return;
}
for(int i = start; i < s.length() && i - start < 3; i++){
String temp = s.substring(start,i+1);
if(temp.charAt(0) == '0' && temp.length()>1) return ;
if(Integer.parseInt(temp) <= 255){
sb.append("."+temp);
dfs(sb,s,i+1,point +1);
sb.delete(sb.lastIndexOf("."),sb.length());
}
}
}
}