93:复原IP地址

 ̄綄美尐妖づ 提交于 2020-01-03 12:36:27

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

示例

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

问题描述

记住IP地址的几个约束:

  • 点分十进制,一共4段,每段1-3位
  • 每段第一位如果是0的话,那么这段就是0
  • 每段的值小于256

我们根据约束可以用DFS解决这个问题。我们别忘了剪枝来提高效率。

AC代码

class Solution:
    def restoreIpAddresses(self, s: str):
        self.res = []
        if len(s) < 4:
            return self.res
        self.digui(0,'',s)
        return self.res
    def digui(self,depth,current,remains):
        if depth > 4:
            return
        elif depth == 4:
            if not len(remains):
                self.res.append(current[:-1])
            return
        for i in range(1,4):
            if len(remains) > 0 and remains[0] == '0':
                self.digui(depth+1,current+remains[0]+'.',remains[1:])
                break # 剪枝
            elif len(remains) > i-1: # 剪枝
                if i == 3 and int(remains[:i]) > 255:
                    return
                self.digui(depth+1,current+remains[:i]+'.',remains[i:])
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!