LeetCode 93.复原IP地址 Python题解

复原IP地址

# 复原IP地址
"""
有效IP地址正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。
例如:"0.1.2.201"和"192.168.1.1"是有效IP地址,
但是"0.011.255.245"、"192.168.1.312"和"192.168@1.1"是无效IP地址。
给定一个只包含数字的字符串s,用以表示一个IP地址,返回所有可能的有效IP地址,
这些地址可以通过在s中插入'.'来形成。你不能重新排序或删除s中的任何数字。你可以按任何顺序返回答案。
"""


class Solution:
    def restoreIpAddresses(self, s):
        du = 4
        ans = list()
        segments = [0] * du

        def dfs(pointer, step):
            # 如果找到了 4 段 IP 地址并且遍历完了字符串,那么就是一种答案
            if pointer == du:
                if step == len(s):
                    ipAddr = ".".join(str(seg) for seg in segments)
                    ans.append(ipAddr)
                return

            # 如果还没有找到 4 段 IP 地址就已经遍历完了字符串,那么提退出
            if step == len(s):
                return

            # 0记录跳过
            if s[step] == "0":
                segments[pointer] = 0
                dfs(pointer + 1, step + 1)
                return

            # 一般情况,枚举每一种可能性并递归
            addr = 0
            for segEnd in range(step, len(s)):
                addr = addr * 10 + (ord(s[segEnd]) - ord("0"))
                if 0 < addr <= 0xFF:
                    segments[pointer] = addr
                    dfs(pointer + 1, segEnd + 1)
                else:
                    break

        dfs(0, 0)
        return ans


s = "25525511135"
a = Solution()
print(a.restoreIpAddresses(s))

# 其实这道题还是很简单的,但是有一个思考空间就是说字符串S怎么循环查找
# 这个是需要思考的,其实也还好,因为其实是循环问题思考一下就可以
# 就是普通的递归与回溯了

相关推荐

  1. LeetCode 93.复原IP地址 Python题解

    2024-01-25 06:58:01       41 阅读
  2. leetcode93. 复原 IP 地址

    2024-01-25 06:58:01       28 阅读
  3. leetcode 93. 复原 IP 地址

    2024-01-25 06:58:01       48 阅读
  4. LeetCode 93. 复原 IP 地址

    2024-01-25 06:58:01       28 阅读
  5. LeetCode 93. 复原 IP 地址

    2024-01-25 06:58:01       20 阅读
  6. leetcode93.复原IP地址

    2024-01-25 06:58:01       19 阅读
  7. [力扣题解]93. 复原 IP 地址

    2024-01-25 06:58:01       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 06:58:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 06:58:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 06:58:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 06:58:01       20 阅读

热门阅读

  1. postman使用-全部总结

    2024-01-25 06:58:01       35 阅读
  2. 【Vue3】readonly 与 shallowReadonly

    2024-01-25 06:58:01       33 阅读
  3. MYSQL账号和权限配置

    2024-01-25 06:58:01       31 阅读
  4. C++中的引用

    2024-01-25 06:58:01       32 阅读
  5. 数据库(MySQL的备份和恢复)

    2024-01-25 06:58:01       29 阅读
  6. MySQL 数据加密

    2024-01-25 06:58:01       37 阅读
  7. macOS 上使用 Sublime Text 删除全部空行

    2024-01-25 06:58:01       35 阅读
  8. nestjs之策略模式的应用

    2024-01-25 06:58:01       25 阅读