from typing import List
# 这道题不是很难,但是限制条件有很多。
# 用递归的方法可以很容易的想到。只需要四层递归就好了。
# 每次进行加上限制条件。过滤每一层就好了。、
class Solution:
def restoreIpAddresses(self, s: str) -> List[str]:
self.IP_lists = []
self.dfs(s, "", 0)
return self.IP_lists
# 定义递归函数,参数为字符串,IP字符串,还有递归层数
def dfs(self, s, ip_str, depth):
# 前三层。
if depth < 3:
# 最多可以取三个字符
for index in range(1, 4):
# 写限制条件,根据IP地址的规范
if s != "" and 0 <= int(s[:index]) <= 255:
if int(s[:index]) == 0 and len(s[:index]) != 1:
continue
elif int(s[:index]) != 0 and s[0] =="0":
continue
# ip_str = ip_str + s[:index] + '.'
else:
# 再次进行递归
self.dfs(s[index:], ip_str + s[:index] + '.', depth + 1)
else:
# 当来到第四层,剩下的s就是最后一数字
# 判断最后一个数字是否符合条件。
if s != "" and 0 <= int(s) <= 255:
if int(s) == 0 and len(s) != 1:
pass
elif int(s) != 0 and s[0] == "0":
pass
else:
ip_str = ip_str + s
self.IP_lists.append(ip_str)
A = Solution()
print(A.restoreIpAddresses("25525511135"))
print(A.restoreIpAddresses("2552"))
# print(A.restoreIpAddresses("000"))
print(A.restoreIpAddresses("010010"))

最新文章

  1. [Android] ADB操作相关经验
  2. 【原/转】opencv的级联分类器训练与分类全程记录
  3. C#制作高仿360安全卫士窗体&lt;二&gt;
  4. WCf的理解
  5. C++输入输出流的重载
  6. 关闭 VS的实时调试器
  7. HDU1584:蜘蛛牌(DFS)
  8. iis6开户gzip 网站属性里面没有服务选项卡
  9. 用OpenSSL生成自签名证书在IIS上搭建Https站点(用于iOS的https访问)
  10. 如何简单的实现新手引导之UGUI篇
  11. React 深入系列4:组件的生命周期
  12. softmax函数详解
  13. openGL实现图形学扫描线种子填充算法
  14. Python——字符串、文件操作,英文词频统计预处理
  15. C#创建windows服务并发布
  16. linux 系统备份和恢复
  17. Luogu P3398 仓鼠找sugar
  18. LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测异常参数
  19. TCP可靠传输:校验和,重传控制,序号标识,滑动窗口、确认应答
  20. java学习路线-从入门到入土

热门文章

  1. MVC + EFCore 项目实战 - 数仓管理系统5 – 菜单配置及里程碑划分
  2. 谷歌浏览器扩展 crx 下载
  3. Nginx(一)Linux上的Nginx安装步骤
  4. 疯狂Python讲义PDF高清完整版免费下载|百度网盘
  5. 离线安装 docker
  6. redis启动报错:The Windows version of Redis allocates a memory mapped heap for sharing with
  7. 7月30日 举办专注于微服务的.NET Conf Focus
  8. matplotlib基础汇总_04
  9. Python按值传递参数和按引用传递参数
  10. 使用 you-get 下载免费电影或电视剧