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()); } } } }