给定一个只包含数字的字符串,复原它并返回所有可能的 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:])
来源:CSDN
作者:BJFU_vth
链接:https://blog.csdn.net/weixin_41687289/article/details/103817313