首页 > 编程语言 >今天练习-回溯算法-93. 复原 IP 地址

今天练习-回溯算法-93. 复原 IP 地址

时间:2024-02-18 10:33:04浏览次数:34  
标签:index return IP self res start 回溯 path 93

注意点&感悟:

  • 难吗?不难。难的是克服畏难的心里。

题目链接:93. 复原 IP 地址

自己独立写的代码:

from typing import List


class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        res = []
        self.backtracking(s, 0, [], res)
        return res

    def backtracking(self, s, start_index, path, result):
        # 退出条件1: 不符合要求的
        if len(path) > 4:
            return
        # 退出条件2: 找到满足要求的了
        if start_index == len(s) and len(path) == 4:  # 如果切到末尾了,并且path里面存的值长度等于4了
            result.append(".".join(path))  # 添加进去
            return
        # 核心代码
        for i in range(start_index, len(s)):
            # 多了一层判断合法性 s[start_index:i+1]  # 注意是start_index为开始条件,要判断[2551]是合法的不
            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:  # 01是不合法的,0是合法的
            return False
        if int(s) > 255:
            return False
        return True


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

 

 

标签:index,return,IP,self,res,start,回溯,path,93
From: https://www.cnblogs.com/liqi175/p/18018889

相关文章

  • day28 回溯算法part4 代码随想录算法训练营 93. 复原 IP 地址
    题目:93.复原IP地址我的感悟:加油!理解难点:开始没理解,start_index的含义start_index是切割后的位置信息。代码难点:代码示例:fromtypingimportListclassSolution:defrestoreIpAddresses(self,s:str)->List[str]:#找3个分割点?#最后......
  • macOS Sonoma 14.3.1 (23D60) 正式版发布,ISO、IPSW、PKG 下载
    macOSSonoma14.3.1(23D60)正式版发布,ISO、IPSW、PKG下载本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。请访问原文链接:https://sysin.org/blog/ma......
  • nginx 配置ipv6
    nginx 配置ipv6注意:从Nginx1.3的某个版本起,默认ipv6only是打开的。ipv6兼容ipv4端口模式不可以复用,复用会显示端口被占用,意思是不能部署两个server,要想复用,用本文中最后那个方法。一、只监听IPV61、方法一server{....listen[::]:80;...}2、方法二server{..........
  • 10 个图像悬停效果 CSS & JavaScript 代码片段
    悬停效果一直是向网站添加交互元素的最简单方法之一,我们看到它们经常用于突出显示文本链接或按钮。悬停效果尤其强大的一个领域是当它们应用于图像时,无论是作为小型卡片布局的一部分还是大型相册的一部分,都可以产生很棒的效果。今天,我们将向您展示设计师将悬停效果集成到图像中的......
  • P1011 [NOIP1998 提高组] 车站
    题目描述火车从始发站(称为第11站)开出,在始发站上车的人数为aa,然后到达第22站,在第22站有人上、下车,但上、下车的人数相同,因此在第22站开出时(即在到达第33站之前)车上的人数保持为aa人。从第33站起(包括第33站)上、下车的人数有一定规律:上车的人数都是前两站上车人数......
  • P1541 [NOIP2010 提高组] 乌龟棋题解
    有两种方法,代码注释都很详细了直接上代码一:记忆化搜索#include<bits/stdc++.h>usingnamespacestd;intt[15];intn,m;inta[400];intmp[45][45][45][45];//mp[i][j][k][l]表示1号用i张,2号用j张,3号用k张,4号用l张的情况下,最多能拿多少分intdfs(intstep,intw)//step......
  • python的xlrd读取Excel数据失败: raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_form
    使用xlrd读取Excel的xlsx格式表格里的数据,读取失败,报错:raiseXLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+';notsupported')xlrd.biffh.XLRDError:Excelxlsxfile;notsupported原因,xlrd为2.0.1版本,更新版本后,xlrd不支持xlsx格式数据的读取了,果断减低版本先卸载2.0......
  • NOIP 突破营
    基础算法枚举与搜索DFS深度优先。BFS广度优先。剪枝记忆化搜索,最优性剪枝,可行性剪枝。A*剪枝一种,估价函数(当前局面\(+\)最小估价函数),类似Dijkstra的贪心。【路径规划】全局路径规划算法——A*算法(含python实现|c++实现)例题-三连击枚举\([100,999]\)......
  • P9325 [CCC 2023 S2] Symmetric Mountains
    原题链接题解,请看题解区————能不能利用已经算过的值来减少后续计算量呢?如果你toolongonline2:n为一的时候只输出零code#include<bits/stdc++.h>usingnamespacestd;inta[5005]={0};intf[5005][5005]={0};intmain(){intn;cin>>n;for(inti=1......
  • VSCOde+Nodejs+Typescript前端开发环境
    1.安装Node.js下载地址:https://nodejs.org/enlts版本:长久稳定版本安装:默认安装就可以了验证:node2.VSCode下载地址:https://code.visualstudio.com/Download安装:默认安装语言切换:安装中文插件,重启 2.1修改终端cmd模式:1.点击设置图标,选择CommandPalette 2.输入:Ter......