首页 > 编程语言 >day28 回溯算法part4 代码随想录算法训练营 93. 复原 IP 地址

day28 回溯算法part4 代码随想录算法训练营 93. 复原 IP 地址

时间:2024-02-18 10:24:01浏览次数:29  
标签:index return day28 res self 随想录 start 算法 path

题目:93. 复原 IP 地址

我的感悟:

  • 加油!

理解难点:

  • 开始没理解,start_index的含义
  • start_index是切割后的位置信息。

代码难点:

代码示例:

from typing import List


class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        # 找3个分割点?
        # 最后一个分割点的时候,判断path,加入res
        # 不符合规则的就跳过
        res = []
        self.backtracking(s, 0, [], res)
        return res

    def backtracking(self, s, start_index, path, result):
        if len(path) > 4:  # 异常情况
            return
        if len(path) == 4 and start_index == len(s):  # start_index是切割后的结果
            result.append(".".join(path))
            return

        for i in range(start_index, len(s)):
            # 这一步是剪枝 if i - start_index > 2: continue
            if self.is_valid(s[start_index:i + 1]):
                path.append(s[start_index:i + 1])
                self.backtracking(s, i + 1, path, result)
                path.pop()

    def is_valid(self, s):
        if s[0] == '0' and len(s) > 1:
            return False
        if int(s) > 255:
            return False
        return True


if __name__ == '__main__':
    obj = Solution()
    s = "25525511135"
    res = obj.restoreIpAddresses(s)
    print(res)

通过截图:

扩展写法:

资料:

网友的答案(更好理解):https://blog.csdn.net/i_do_i/article/details/135997951

题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html

视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/

标签:index,return,day28,res,self,随想录,start,算法,path
From: https://www.cnblogs.com/liqi175/p/18018842

相关文章

  • 算法入门:搜索算法
    文章目录1.二分查找2.深度优先搜索(DFS)3.广度优先搜索(BFS)4.DFS与BFS区别 1.二分查找思想:二分查找是一种高效的查找算法,它基于分治思想,适用于已排序的数组。确定搜索范围:首先确定整个数组的搜索范围,通常是从数组的起始位置到结束位置。计算中间位置:计算搜索范围的中......
  • 排序算法总结
    冒泡排序稳定排序时间复杂度o(n2)空间复杂度o(1)点击查看代码staticvoidBubbleSort(){int[]data={1,8,5,7,9,4,6,99,88,74};inti,j,flag;//岗哨模式的冒泡排序for(i=data.Length-1;i>0......
  • Python 机器学习 逻辑回归算法
    ​ 1、理解逻辑回归逻辑回归建立在线性回归之上。在线性回归中,模型预测的是一个连续的数值。而在逻辑回归中,线性回归的输出被输入到Sigmoid函数中,用于预测某个类别的概率。Sigmoid函数是一个S形的曲线,它将任意实数映射到(0,1)区间,适合用来表达概率。逻辑回归广泛应用于各种......
  • 【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • 代码随想录 day53 买卖股票的最佳时机
    买卖股票的最佳时机这里可以用贪心的思路因为只需要买卖各一次股票所以找到最大最小值算区间差也可以这里用dpdp[i][0]表示持股的收益dp[i][1]表示不持股的收益各自各有一种情况是维持原状还有一种就是持股卖出或者不持股买入取max就可以这里用了两个单位的数组只......
  • 【数据结构】串的表示与模式匹配算法
    串串是内容受限的线性表(栈和队列是操作受限的线性表)串(string)是零个或多个任意字符组成的有限序列S:串名a1a2a3...an:串值n:串长当n=0时,表示空串,空串用\(\phi\)表示子串:一个串中任意个连续字符组成的子序列(含空串)例如“abc”的子串有“”、“a”、“b”、"c"、"ab"......
  • 对最大公约数求法和扩展欧几里得算法的简要概述
    目录1.最大公约数(gcd)1.1更相减损术时间复杂度分析1.2辗转相除法(欧几里得算法)时间复杂度分析2.最小公倍数(lcm)3.裴蜀定理(贝祖定理)3.1扩展欧几里得算法(exgcd)1.最大公约数(gcd)数论中,通常用\(d\|\a\)表示\(d\)能整除\(a\),即\(......
  • 代码随想录算法训练营第十七天 | 110.平衡二叉树 (优先掌握递归)| 404.左叶子之和 (优先
    257.二叉树的所有路径 已解答简单 相关标签相关企业 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例1:输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:ro......
  • 代码随想录算法训练营第十六天 | 104.二叉树的最大深度| 559.n叉树的最大深度|222.完
    222.完全二叉树的节点个数 已解答简单 相关标签相关企业 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中......
  • 代码随想录算法训练营第十五天 | 层次遍历 | 101. 对称二叉树 | 226.翻转二叉树
    226.翻转二叉树 已解答简单 相关标签相关企业 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[......