93. 复原 IP 地址

1、之前写回溯都是判断path的长度,而从切割问题开始,判断的是start与s的长度

2、if前面一个条件是去除数值前面带0的,如将023去除,后面一个条件是专门把等于0的拿出,如将00,000的去除

class Solution(object):
    def partition(self, s):
        """
        :type s: str
        :rtype: List[List[str]]
        """
        def backtracking(path, start):
            if len(path) > 4:  # 剪枝操作
                return
            if start == len(s) and len(path) == 4:  # 之前写回溯都是判断path的长度,而从切割问题开始,判断的是start与s的长度
                res.append(".".join(path[:]))
            else:
                for i in range(start, n):
                    if (0 < int(s[start:i + 1]) <= 255 and not s[start:i + 1].startswith("0")) or (int(s[start:i + 1])==0 and len(s[start:i + 1])==1):
                        # 前面一个条件是去除数值前面带0的,后面一个条件是专门把等于0的拿出,等于00,000的去除
                        path.append(s[start:i + 1])
                        backtracking(path, i + 1)
                        path.pop()

        n = len(s)
        res = []
        backtracking([], 0)
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值