leetcode刷题-93复原IP地址

题目

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。

 

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]

思路

深度优先遍历的思想

实现

class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        segments = [0] * 4
        result = []
        def dfs(id, idx):
            if id == 4:
                if idx == len(s):
                    ipAddr = ".".join(str(seg) for seg in segments)
                    result.append(ipAddr)
                return

            if idx == len(s):
                return

            if s[idx] == "0":
                segments[id] = 0
                dfs(id + 1, idx + 1)

            addr = 0
            for j in range(idx, len(s)):
                addr = addr * 10 + (ord(s[j]) - ord("0"))
                if 0 < addr <= 0xFF:
                    segments[id] = addr
                    dfs(id + 1, j + 1)
                else:
                    break
        dfs(0,0)
        return result

 

posted @ 2020-08-14 10:09  maoguai  阅读(135)  评论(0编辑  收藏  举报