题解 | 数字字符串转化成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
        

芜湖怒兽!!

全部评论

相关推荐

昨天 22:36
门头沟学院 Java
投递运满满等公司6个岗位
点赞 评论 收藏
分享
11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务