LeetCode——Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

题目是给一个string,划分合理的ip的地址并给出包含所有合理的ip地址的list,我们知道ip地址的组成是4个部分,合理的范围是0.0.0.0~255.255.255.255

代码主要有两个函数:

  isValid——验证是否合理,如果开头是0则这个串必须是0,否则必须大于0小于255;

  dfs——使用深搜的方式,搜索所有可能的组合;

所以用DFS的方式,搜索所有可能的组合,每一次搜索至第四个部分的时候,如果也是valid的话,那么这是一个合理的IP,添加到结果列表里

注意一下生成IP的细节, 添加 . 什么的。

Python代码如下:

 1 class RestoreIPAddress:
 2 
 3     def isValid(self, src):
 4         if src[0] == '0':
 5             return src == '0'
 6         return 255 >= int(src) > 0
 7 
 8     def dfs(self, src, temp, res, count):
 9         if count == 3 and self.isValid(src):
10             res.append(temp + src)
11             return
12         for i in range(1, min(4, len(src))):
13             sub = src[0:i]
14             if self.isValid(sub):
15                 self.dfs(src[i:], temp + sub + '.', res, count + 1)
16 
17     def restoreIpAddresses(self, s):
18         if len(s) < 4 or len(s) > 12:
19             return []
20         res = []
21         self.dfs(s, "", res, 0)
22         # print(res)
23         return res
24 
25 p = RestoreIPAddress()
26 p.restoreIpAddresses("0000")
原文地址:https://www.cnblogs.com/aboutblank/p/3991266.html