93. 复原 IP 地址

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/restore-ip-addresses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


根据.分割出递归部分。可以用三种情况:1,2,3位。截取不同的位数,判断合法性,之后交给下一层继续逻辑。

    List<String> ret = new ArrayList<>();
    public List<String> restoreIpAddresses(String s) {
        dfs(s,0,"",0);
        return ret;

    }
    // 本质是还是组合的问题,拼接字符串
    // 当前位置有3中清空,1,2,3位,一次遍历。
    public void dfs(String s, int index, String str,int count) {
        if(count > 4) {
            return;
        }
        if(s.length() == index && count == 4) {
            ret.add(str);
            return;
        }

        for(int i=index;i<index+3 && i<s.length();i++) {
            String num = s.substring(index,i+1);
            if(num.startsWith("0") && num.length() != 1) {
                continue;
            }
            if(Integer.valueOf(num) > 255) {
                continue;
            }
            // 下一层的开始位置是i+1
            dfs(s,i+1,str.length() == 0 ? num : str+"."+num,count+1);

        }
    }
posted @ 2022-03-02 13:24  一颗青菜  阅读(3)  评论(0)    收藏  举报