题解 | 数字字符串转化成IP地址
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return string字符串一维数组
#
class Solution:
def restoreIpAddresses(self , s: str) -> List[str]:
# write code here
result = []
n = len(s)
# 若字符串长度小于 4 或大于 12,无法构成有效的 IP 地址
if n < 4 or n > 12:
return result
def backtrack(start, dots, current_ip):
# 当已经放置了 3 个点,意味着要判断剩余部分能否构成一个有效的 IP 段
if dots == 3:
if isValid(s[start:]):
result.append(current_ip + s[start:])
return
# 尝试不同的分割点,每个 IP 段长度在 1 到 3 之间
for i in range(1, 4):
if start + i <= n:
segment = s[start:start + i]
if isValid(segment):
backtrack(start + i, dots + 1, current_ip + segment + '.')
def isValid(segment):
# 检查 IP 段长度是否合法
if len(segment) == 0 or len(segment) > 3:
return False
# 检查是否存在前导零(除了单个 0 的情况)
if segment[0] == '0' and len(segment) > 1:
return False
# 检查 IP 段的值是否在 0 到 255 之间
return 0 <= int(segment) <= 255
backtrack(0, 0, "")
return result
芜湖怒兽!!