LeetCode 93. 复原IP地址

Posted 菜鸡的世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 93. 复原IP地址相关的知识,希望对你有一定的参考价值。

https://leetcode-cn.com/problems/restore-ip-addresses/

这个题很典型的回溯算法,但是要考虑的问题真的太多了,写的我好烦。

 public List<String> restoreIpAddresses(String s) {
        List<String> res = new ArrayList<>();
        if(s == null || s.length() == 0){
            return res;
        }
        backTracking(res,s,0,new ArrayList<>());
        return res;
    }

    public void backTracking(List<String> res, String str, int index, List<String> list){
        //如果list中已经有4个元素,就进入判断,但是要成为一个真正的答案还需要它已经遍历到了字符串的结尾。
        if(list.size() == 4){
            if(index == str.length()){
                res.add(String.join(".",list));
            }
            return;
        }

        for(int j = 1; j < 4 ; j++){
            //防止数组越界
            if(j + index > str.length()){
                break;
            }
            String temp = str.substring(index,index+j);
            //判断0开头的IP,以及是大于255的IP
            if((temp.startsWith("0") && temp.length() > 1) || ((Integer.parseInt(temp) > 255) && temp.length() == 3)){
                continue;
            }
            list.add(temp);
            backTracking(res,str,index+j,list);
            list.remove(list.size()-1);
        }
    }

 

以上是关于LeetCode 93. 复原IP地址的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript 刷题] 搜索 - 复原 IP 地址, leetcode 93

leetcode-93-复原ip地址

LeetCode 93. 复原IP地址

LeetCode 93. 复原IP地址

精选力扣500题 第59题 LeetCode 93. 复原 IP 地址c++/java详细题解

Leetcode No.93 复原 IP 地址(DFS)