class Solution:
def restoreIpAddresses(self , s ):
# write code here
def dfs(start, cnt):
# cnt表示剩余ip段的数量,一共有4段
# 若无剩余i段 and 已经达到字符串s的长度
if cnt == 0 and start == len(s):
total.append('.'.join(formed))
return
if cnt < 0 or start > len(s):
return
# 寻找下一个ip段时:最多遍历3位 且 不能超过s的长度
for i in range(start, min(start+3, len(s))):
part = s[start: i+1] # 取出可能的每一种ip段,检查其是否合法
# 不合法情况:每段ip有多位时不能以0开头
if part[0] == '0' and len(part) > 1:
return
# 不合法情况:每段ip不能超过255
if int(part) > 255:
return
formed.append(part)
dfs(i + 1, cnt - 1)
formed.pop() # 弹出表示回溯
total, formed = [], []
dfs(0, 4)
return total
93. 数字字符串转化成IP地址(Medium)
最新推荐文章于 2025-05-28 22:06:45 发布