Restore IP Addresses

https://leetcode.com/problems/restore-ip-addresses/description/
首先复习一下关于IP地址部分的知识
ip地址是一个32位二进制数,通常被分为4个小节,8位一个小节,用对应10进制来表示,'.'字符隔开。
遇到字符串的子序列或配准问题首先想到的是动态规划,只要遇到需要求出列出所有可能情况的首先用递归。这一题是需要列出所有可能的解,更符合第二种情况。

class Solution(object):
    def restoreIpAddresses(self, s):
        """
        :type s: str
        :rtype: List[str]
        """
        k = 4
        out =""
        res = []
        self.restore(s,k,out,res)
        return res
    
    def restore(self, s, k ,out, res):
        if k == 0 and len(s) == 0 and out not in res:
            res.append(out)
            return 
        else:
            for size in range(1,4):
                t = s[:size]
                if len(t) <= len(s) and self.valid(s[:size]) == 1:
                    if k == 1:
                        self.restore(s[size:], k - 1, out + t, res)
                    else:
                        self.restore(s[size:], k - 1, out + t +'.', res)
    
    def valid(self,s):
        if int(s) > 256 or int(s) < 0:
            return 0
        elif len(s) > 1 and s[0] == '0':
            return 0
        elif len(s) == 0:
            return 0
        else:
            return 1
                        
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容