码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-93-复原ip地址

时间:2019-07-13 17:26:38      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:span   暴力   end   alt   not   src   help   mp4   ima   

题目描述:

技术图片

方法一:暴力法

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地址

标签:span   暴力   end   alt   not   src   help   mp4   ima   

原文地址:https://www.cnblogs.com/oldby/p/11181358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!