93. Restore IP Addresses (Medium)

Description:

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

Example:

Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]


Solution:

NOTE: 注意用“str(int(s)) == s”去开头的0,eg. "010" 不能被当做 "10"
NOTE: string[0] != "0"不能去开头的0,因为0本身是符合的,但不满足这个条件

class Solution:
    def restoreIpAddresses(self, s: str,num = 4) -> List[str]:
        if len(s) < num or len(s) > num*3:
            return []
        if num == 1 and int(s) < 256 and str(int(s)) == s: # 只剩一个slot了
            return [s]
        
        ls = [s[:1],s[:2],s[:3]]
        result = []
        for i in range(3):
            head = ls[i]
            if int(head) > 255 or str(int(head)) != head: # 数字太大 或者 开头有0
                break
            if i+1 < len(s):
                for r in self.restoreIpAddresses(s[i+1:],num-1):
                    result.append(head+"."+r)
                    
        return result

Runtime: 36 ms, faster than 91.37% of Python3 online submissions for Restore IP Addresses.
Memory Usage: 13.3 MB, less than 25.00% of Python3 online submissions for Restore IP Addresses.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,490评论 0 10
  • 题目 给定一个指定的字符串,推导出所有可能的IP地址 Example 自己的解题思路 使用排列组合。算出所有分隔符...
    逸筱幻阅读 287评论 0 0
  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc阅读 2,940评论 0 0
  • 今天大年三十,惯例要回乡下祖屋搞卫生、贴春联、祭祖。除了二叔一家,该回来的都回来了。在外流浪的,爹妈求着也不回来,...
    原疯不动阅读 322评论 1 4
  • 没有物质的生活是匮乏的, 而只有物质的生活是孤独的。 一个孤独的人生活在世界上, 可悲?可笑?抑或是可怜。 当人们...
    小肉笼包阅读 121评论 0 1