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

注意点&感悟:

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

题目链接: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)

 

 

posted @ 2024-02-18 10:32  o蹲蹲o  阅读(2)  评论(0编辑  收藏  举报