Leetcode93.复原IP地址 - Restore IP Addresses - Python - 回溯法

解题思路:

1.此题与Leetcode131.分割回文串十分相似。

请参考:Leetcode131.分割回文串-Palindrome Patitioning-Python-回溯法-CSDN博客

2.在此基础上,需要添加逗点,以及当前进入递归函数的字符串是否合法。

代码:

复制代码
class Solution(object):
    result = []
    path = []
    def trackBacking(self, s, startIndex, pointNum):
        if startIndex == len(s) and pointNum == 4:
            self.result.append('.'.join(self.path))
            return
        for i in range(startIndex, len(s)):
            if self.isValid(s, startIndex, i):
                self.path.append(s[startIndex: i+1])
                pointNum += 1
                self.trackBacking(s, i+1, pointNum)
                self.path.pop()
                pointNum -= 1
    
    def isValid(self, s, start, end):
        if start>end:
            return False
        if s[start] == '0' and start != end:
            return False
        num = 0
        for i in range(start, end+1):
            if not s[i].isdigit():
                return False
            num = num * 10 + int(s[i])
        if num > 255:
            return False
        return True

    def restoreIpAddresses(self, s):
        self.result = []
        self.trackBacking(s, 0, 0)
        return self.result
相关推荐
ullio11 分钟前
div1+2. 2178F - Conquer or of Forest
算法
BBB努力学习程序设计24 分钟前
深入理解 Python 中的深浅拷贝(Shallow Copy & Deep Copy):避免数据引用的 “坑”
python
Leweslyh24 分钟前
制导算法开发实践指南:从入门到精通
算法·开发·武器·制导律设计
chushiyunen27 分钟前
快慢双指针算法笔记
数据结构·笔记·算法
BBB努力学习程序设计29 分钟前
深入理解 Python 中的闭包(Closure):封装状态的函数式编程利器
python
烟锁池塘柳039 分钟前
一文总结模型压缩技术:剪枝、量化与蒸馏的原理、实践与工程思考
算法·机器学习·剪枝
独自破碎E42 分钟前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
東雪木1 小时前
编程算法学习——数组与排序算法
学习·算法
你撅嘴真丑1 小时前
方格取数 矩阵取数游戏 -动态规划
算法·动态规划
澜莲花1 小时前
python图色之opencv基础---验证码实战
开发语言·python·opencv