9.回溯算法-复原IP地址

文章描述了一个编程问题,要求从给定的数字字符串s中生成所有有效的IPv4地址,通过在适当位置插入.,并使用回溯法进行求解。示例展示了如何使用back_tracking函数实现这一过程。
摘要由CSDN通过智能技术生成
地址,,| LeetCode:93.复原IP地址
# 正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。
#
# 例如:"0.1.2.201"和"192.168.1.1"是有效IP地址,
# 但是"0.011.255.245"、"192.168.1.312"和 "192.168@1.1"是无效IP地址。
# 给定一个只包含数字的字符串s ,用以表示一个IP地址,返回所有可能的有效IP地址,
# 这些地址可以通过在s中插入'.'来形成。你不能重新排序或删除s中的任何数字。
# 你可以按任何顺序返回答案。
#
#
# 示例1:
# 输入:s = "25525511135"
# 输出:["255.255.11.135", "255.255.111.35"]
#
# 示例2:
# 输入:s = "0000"
# 输出:["0.0.0.0"]
#
# 示例3:
# 输入:s = "101023"
# 输出:["1.0.10.23", "1.0.102.3", "10.1.0.23", "10.10.2.3", "101.0.2.3"]


s = "25525511135"



def back_tracking(start, temp,s, res):

    if len(temp) > 4:
        return
    if start == len(s) and len(temp) == 4:
        # print(temp)
        t = '.'.join(temp)
        res.append(t)

    for i in range(start, len(s)):
        if int(s[start:i + 1]) > 255 or (s[start] == '0' and len(s[start:i + 1]) >= 2):
            continue
        temp.append(s[start:i + 1])
        back_tracking(i + 1, temp, s, res)
        temp.pop()
    return res

res = []
s = "25525511135"
print(back_tracking(0, [], s, res))
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值