首页 > 编程语言 >代码随想训练营第二十八天(Python)| 93.复原IP地址 、 78.子集、 90.子集II

代码随想训练营第二十八天(Python)| 93.复原IP地址 、 78.子集、 90.子集II

时间:2023-11-07 20:23:12浏览次数:71  
标签:return nums Python res self II start 子集 path

93.复原IP地址
1、方法一

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

    def tracebacking(self, s, start, path, res):
        if start == len(s) and len(path) == 4: # 刚好分割为 4 份
            res.append(".".join(path[:]))
            return

        if len(path) > 4: # 剪枝
            return

        for i in range(start, len(s)):
            if self.isValidIp(s, start, i):
                path.append(s[start:i+1])
                self.tracebacking(s, i+1, path, res)
                path.pop()

    def isValidIp(self, s, start, end): # 判断是否合法
        if start > end:
            return False
        for i in range(start, end+1):
            if not s[i].isdigit():
                return False
        if int(s[start]) == 0 and start != end:
            return False
        return 0<=int(s[start:end+1])<=255

2、方法二

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

    def tracebacking(self, s, start, point, path, res):
        if point == 3:
            if self.isValidIp(s, start, len(s)-1):
                path.append(s[start:])
                res.append("".join(path[:]))
                # 回溯,这里容易忘记
                path.pop() 
            return

        for i in range(start, len(s)):
            if self.isValidIp(s, start, i):
                sub = s[start:i+1]
                path.append(sub)
                path.append(".")
                point += 1 
                self.tracebacking(s, i+1, point, path, res)
                # 回溯
                point -= 1
                path.pop()
                path.pop()


    def isValidIp(self, s, start, end): # 判断是否合法
        if start > end:
            return False
        for i in range(start, end+1):
            if not s[i].isdigit():
                return False
        if int(s[start]) == 0 and start != end:
            return False
        return 0<=int(s[start:end+1])<=255

78.子集

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res = []
        self.tracebacking(nums, 0, [], res)
        return res

    def tracebacking(self, nums, start, path, res):
        res.append(path[:])
        if start > len(nums)-1:
            return
        
        for i in range(start, len(nums)):
            path.append(nums[i])
            self.tracebacking(nums, i+1, path, res)
            path.pop()

90.子集II

class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        res = []
        nums.sort()
        self.tracebacking(nums, 0, [], res)
        return res

    def tracebacking(self, nums, start, path, res):
        res.append(path[:])
        if start > len(nums) - 1:
            return

        for i in range(start, len(nums)):
            if i > start and nums[i] == nums[i-1]:
                continue
            path.append(nums[i])
            self.tracebacking(nums, i+1, path, res)
            path.pop()

标签:return,nums,Python,res,self,II,start,子集,path
From: https://www.cnblogs.com/yixff/p/17813807.html

相关文章

  • 如何深度学习Python?
    安装必要软件:首先需要安装Anaconda或Miniconda等科研计算环境,并创建虚拟环境以便管理不同项目所需库和版本。可以按照如下步骤进行操作:下载并安装Anaconda或Miniconda。打开命令行工具(Windows系统中为cmd),输入condacreate--nameenv_namepython=3.x创建一个新的Pyt......
  • python连接redis集群写入数据
    环境;Python:3.6.5 需要安装redis-py-cluster模块 #!/usr/bin/envpython#coding=utf-8fromredisclusterimportRedisClusterstartup_nodes=[{"host":"192.168.1.109","port":7001},{"host":"192.168.1.10......
  • .netCoreApi5.0+部署iis站点webconfig配置 HTTP 错误 500.24 - Internal Server Error
     <?xmlversion="1.0"encoding="utf-8"?><configuration><locationpath="."inheritInChildApplications="false"><system.webServer><handlers><addname="aspN......
  • Python学习1
    PyCharm快捷键:ctrl+alt+s:打开软件设置ctrl+d∶复制当前行代码shift+alt+上/下:将当前行代码上调或者下调crtl+shift+f10∶运行当前代码文shift+f6:重命名文件ctrl+f:搜索数据类型:  注释分类:注释是代码中的解释型语句,对代码内容进行注解,注释不是代码,不......
  • 分享一个Python 批量word转图片的方法
    我们的工作场景中每次上传word时都要把word文件先导出图片,然后一一上传系统,因为只有PNG图片能直接预览,且确保文本、图片和格式保持不变。但有时候遇到大的word文档,一个文档导出来可能都有几十张图片,这样效率实在太低。针对这种情况,我们选了Spire.DocforPython批量将word转图片......
  • Python的应用领域
    web开发Python在web开发上有很多框架Django、Flask、Tornado等众多框架在我国豆瓣、美团、知乎都使用Python做基础的设施建设数据分析和科学计算:Python有着众多的第三方库的支持 方便帮助数据分析人员去完成数据分析和可视化的操作 人工智能和机器学习可使用第三方库可以......
  • Python语言的特点
    Python语言的设计非常优雅,明确,简单。语法简洁:实现相同语言的代码行数,是其他语言的1/5或者1/10,编写起来更加简单与平台无关:Python程序可以在如何安装了Python解释器的计算机的环境上运行粘性拓展:能够整合各种代码,被称为胶水语言开源理念:为语言发展奠定了坚实的群众基础灵活通......
  • Python文件操作和异常处理
    记录2023.11.7学习文件操作文件计算机处理信息,需要长久保存,使用文件来进行处理。按照内部数据的组织形式,分为:文本文件和二进制文件两类。文件分类文本文件若干行以编码存储的字符组成。通常每行以换行符结尾。二进制文件除了文本文件之外的文件都称为二进制文件。以字节串形式存储,......
  • python 播放语音使用 playsound -注意事项
    https://github.com/TaylorSMarks/playsoundpipinstallplaysound>>>fromplaysoundimportplaysound>>>playsound('/path/to/a/sound/file/you/want/to/play.mp3')try:playsound("test.wav")exceptExceptionase:p......
  • python虚拟环境的使用笔记
    方法一:在后台手动安装1、输入命令:pip3installvirtualenv2、指定目录:cd....;然后输入:virtualenvenv_django(创建虚拟环境) 3、激活该虚拟环境:      windows进到目录里,的Script文件夹输入:activate       linux:soruseenv1/Script/activate ......