首页 > 其他 > 详细

93. Restore IP Addresses

时间:2019-08-12 13:09:38      阅读:88      评论:0      收藏:0      [点我收藏+]

93. Restore IP Addresses

0. 参考文献

序号 文献
1 [LeetCode] Restore IP Addresses 复原IP地址
2 【LeetCode】93. Restore IP Addresses 解题报告(Python & C++)

1. 题目

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"]

2. 思路

本题是判断给到的字符串能够组成的合法IP的数量。对于字符串的问题,如果是匹配或者是子序列的问题,优先考虑DP。但是本题显然不是。求解的办法是使用递归解决。要注意一点就是剪枝,不然Python下会超时。

3. 实现

class Solution(object):
    def restoreIpAddresses(self, s):
        """
        :type s: str
        :rtype: List[str]
        """
        if len(s) > 4 * 4:
            return
        ret = []
        self.restore(ret,"",4,s)
        return ret
        
    def restore(self,ret,tmpstr,k,instr):
        if len(instr) > k * 4:
            return
        if k == 0 and len(instr) ==0 :
            ret.append(tmpstr)
        else :
            for i in range(1,4) :
                if len(instr) >= i and  self.is_vaild(instr[0:i]):
                    if k == 1 :
                        self.restore(ret, tmpstr + instr[0:i], k-1, instr[i:])
                    else:
                        self.restore(ret, tmpstr + instr[0:i]+".", k-1, instr[i:])
                
    def is_vaild(self,s):
        if s == "" or len(s) > 3 or ( len(s) > 1 and s[0] == "0" ):
            return False
        tmp = int(s)

        return True if tmp <=255 and tmp >= 0 else False

93. Restore IP Addresses

原文:https://www.cnblogs.com/bush2582/p/11338954.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!