Restore IP Addresses
来源:互联网 发布:捷易通淘宝助理 编辑:程序博客网 时间:2024/06/08 18:26
leetcode第93题,计算有效的IP地址。
分析问题,首先什么是有效的IP,这里有效是广义的,也就是凡是符合IP的要求的都算,不考虑特殊IP地址的限制。这样有效IP的要求就放宽了不少,首先IP应该有四级,每一个的数字都应该在0-255之间,还有一点比较隐蔽,那就是0单独出现时正确的,但是如“”010”这样的数字就是不合法的了。
确认有效IP的格式后,就要分析算法,这里运用深度搜索,递归出口条件有两个,一个是长度上不符合要求则要立刻返回,而是当递归到最后一层时需要判断首位是否为0且在0-255范围内。
递归的时候,遍历方式为从当前第一个字符开始依次向后扩展1-3个字符。
class Solution(object): def restoreIpAddresses(self, s): """ :type s: str :rtype: List[str] """ def dfs(string,n): if len(string) > 3*n or len(string) < n: # 如果长度不符合要求则直接返回 return [] if n == 1: # 考虑处理到最后的字符串的情况 if string[0] == '0' and len(string) > 1: # 开头是0,但不是单个的0返回 return [] if int(string) > 255: # 最后的子串超出范围返回 return [] return [string] ret = [] for i in xrange(1,4): if string[0] == '0' and i > 1: # 开头是0,不是单个的0 continue if int(string[:i]) > 255: # 超出返回 continue iret = dfs(string[i:],n-1) # 深搜 if len(iret) > 0: ret += [string[:i]+'.'+iiret for iiret in iret] return ret return dfs(s,4)
0 0
- LeetCode: Restore IP Addresses
- Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- Restore IP Addresses
- [LeetCode]Restore IP Addresses
- Restore IP Addresses
- Restore IP Addresses
- LeetCode:Restore IP Addresses
- Restore IP Addresses
- Restore IP Addresses
- LeetCode Restore IP Addresses
- [leetcode] Restore IP Addresses
- Restore IP Addresses
- LeetCode:Restore IP Addresses
- [LeetCode] Restore IP Addresses
- LeetCode - Restore IP Addresses
- LeetCode | Restore IP Addresses
- web前端 | 一条“不归路” - 学习路线
- 4道过滤菜鸟的iOS面试题
- nginx 使用
- 特征值分解与主成分分析
- MessagePack, Protocol Buffers和Thrift序列化框架原理和比较说明
- Restore IP Addresses
- Effective Java 之通用程序设计
- Android 从一个应用跳转到另外一个应用中的问题
- HDU 2098 分拆素数和
- 继承和派生
- 删除数组中相同的元素
- Error 1402. Could not open key:
- BZOJ2212&3702: [Poi2011]Tree Rotations
- Context 和 Applicatin那点事