leetcode刷题250天(18)——剑指 Offer II 087. 复原 IP

class Solution(object):
    def restoreIpAddresses(self, s):

        res, cur = [], []
        L = len(s)

        def dfs(idx):

            if len(cur) > 4:
                return 
            # 当前总长度满足 且 数据为合法4部分
            if idx == L and len(cur) == 4:
                res.append(".".join(cur))

            # 滑动窗口  选择当前加入 合法 队列元素
            for i in range(idx+1, min(idx+4, L+1)):
                # 后面长度 >= 3位 : 滑动区间3位
                # 后面长度 <  3位 : 只能到最后
                curTempAdd = s[idx : i]
                # 合法判断
                # 1 长度大于1 首位不为0 
                # 2 字符串对应数值不大于255
                if (len(curTempAdd) > 1 and  curTempAdd[0] == "0" ) or int(curTempAdd) > 255:
                    continue
                
                # 暂入队列
                cur.append(curTempAdd[:])
                # 滑动窗口左侧右移
                dfs(i)
                # 结束退位
                cur.pop()

        dfs(0)
        return res

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值