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