LeetCode 93. 复原IP地址 | Python

93. 复原IP地址


题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/restore-ip-addresses

题目


给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]

解题思路


思路: 回溯

先看题目,题目要求的是给定一个只包含数字的字符串,复原返回所有可能的 IP 地址格式。至于 IP 地址的有效格式,是由 4 个整数(0~255),整数间用 ‘.’ 分隔组成。

首先,根据题目,借助示例来看下:

s = "25525511135"

假设,给定的字符串如上面示例,那么我们在第一个片段中,我们有三种选择的可能:

  • 选 ‘2’;
  • 选 ‘25’;
  • 选 ‘255’。

当第一片段选择完毕后,后续的三个片段,也以同样的形式去选择。但是我们在选择的过程中可能会出错,如果出错的话,此时我们就需要撤销这项选择,转而去尝试另外一个选择。

同样的,这里我们的选择是有依据的,并非随意选择。由题目,我们也可以发现,每个片段可选择的数字区间在 [0, 255] 之间,这里也表示长度不能超过 3。

这里还有个需要注意的,题目中并没有明确指出。每个片段中选择的数字是不能有前导 0 的,0 可以作为一个选择,但是不能出现 ‘0…’ 这样的形式,这个也是在测试用例没过的时候发现的。╮(╯▽╰)╭

前面说了选择以及限制,那我们如何才能确认,当选择完毕之后,选择组成的片段就是有效的?

  • 首先,要在前面所述的限制条件下进行选择;
  • 再来,题目要求复原,也就是,我们选择完 4 个片段之后,必须是要用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值