leetcode-93-复原ip地址

Posted oldby

tags:

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

题目描述:

技术图片

方法一:暴力法

class Solution: 
    def restoreIpAddresses(self, s: str) -> List[str]: 
        n = len(s) 
        res = [] # 判读是否满足ip的条件 
        def helper(tmp): 
            if not tmp or (tmp[0] == "0" and len(tmp) > 1) or int(tmp) > 255: 
                return False 
            return True 
        # 三个循环,把数字分成四份 
        for i in range(3): 
            for j in range(i + 1, i + 4): 
                for k in range(j + 1, j + 4): 
                    if i < n and j < n and k < n: 
                        tmp1 = s[:i + 1] 
                        tmp2 = s[i + 1:j + 1] 
                        tmp3 = s[j + 1:k + 1] 
                        tmp4 = s[k + 1:] 
                        # print(tmp1, tmp2, tmp3, tmp4) 
                        if all(map(helper, [tmp1, tmp2, tmp3, tmp4])): 
                            res.append(tmp1 + "." + tmp2 + "." + tmp3 + "." + tmp4) 
        return res

方法二;回溯

class Solution: 
    def restoreIpAddresses(self, s: str) -> List[str]: 
        res = [] 
        n = len(s) 
        def backtrack(i, tmp, flag): 
            if i == n and flag == 0: 
                res.append(tmp[:-1]) 
                return 
            if flag < 0: 
                return 
            for j in range(i, i + 3):
                if j < n: 
                    if i == j and s[j] == "0": 
                        backtrack(j + 1, tmp + s[j] + ".", flag - 1) 
                        break 
                    if 0 < int(s[i:j + 1]) <= 255: 
                        backtrack(j + 1, tmp + s[i:j + 1] + ".", flag - 1) 
        backtrack(0, "", 4) 
        return res

 

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

LeetCode 93. 复原IP地址

LeetCode 93. 复原IP地址

leetcode-93-复原ip地址

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

CCF 202104-1 灰度直方图 和 LeetCode 93 复原IP地址

Leetcode 93.复制IP地址