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")

 

你可能感兴趣的:(LeetCode)