Restore IP Address Leetcode Python

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

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

这道题目解法与求subarray一样,但并非NP问题。解法是定义一个递归,在递归里面循环递归四次即可。判断可行条件,IP每个段的值小于等于255 并且数值前面没有0,比如025 为错误的。解法是s==str(int(s)) 如果有0两者不等。

This problem can be categorized as finding sub array from a big array. But here is a minor difference between this problem and the subset problem, we just need to traverse 4 times because IP has 4 parts split by 3 dots. Another import thing we need to know is that for every part of the IP, we need to make sure the value is no greater than 255 and there is no 0 in front it,ex 025 is not valid. This can be solved by using s==str(int(s)).

The code is as follow

class Solution:
    # @param s, a string
    # @return a list of strings
    def getIP(self,valuelist,solution,s,start):
        if start==3:
            if len(s)>0:
                if int(s)<=255 and s==str(int(s)):
                    solution.append(valuelist+s)
            return
        for index in range(1,4):
            if index<len(s) and int(s[:index])<=255 and s[:index]==str(int(s[:index])):
                self.getIP(valuelist+s[:index]+'.',solution,s[index:],start+1)
            
    def restoreIpAddresses(self, s):
        solution=[]
        self.getIP('',solution,s,0)
        return solution

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值