class Solution(object):
def restoreIpAddresses(self, s):
res, cur = [], []
L = len(s)
def dfs(idx):
if len(cur) > 4:
return
# 当前总长度满足 且 数据为合法4部分
if idx == L and len(cur) == 4:
res.append(".".join(cur))
# 滑动窗口 选择当前加入 合法 队列元素
for i in range(idx+1, min(idx+4, L+1)):
# 后面长度 >= 3位 : 滑动区间3位
# 后面长度 < 3位 : 只能到最后
curTempAdd = s[idx : i]
# 合法判断
# 1 长度大于1 首位不为0
# 2 字符串对应数值不大于255
if (len(curTempAdd) > 1 and curTempAdd[0] == "0" ) or int(curTempAdd) > 255:
continue
# 暂入队列
cur.append(curTempAdd[:])
# 滑动窗口左侧右移
dfs(i)
# 结束退位
cur.pop()
dfs(0)
return res
leetcode刷题250天(18)——剑指 Offer II 087. 复原 IP
最新推荐文章于 2024-07-27 12:20:46 发布