Restore IP Addresses

My Submissions

Question

 Solution 

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)

SOLUTION 1:

如果有跟过主页君的讲解,就会知道,这又是一道相当经典的DFS模板题目。 我们照样套用http://www.ninechapter.com/的递归

模板,退出条件是:path.size == 4.

在模板中,我们加入一些判断条件来中断循环:例如说判断pre的字符串转化后的数字是不是在255以内。

另外,我们要排除055这种数字,所以加入这一行判断:

if (s.charAt(index) == '0' && i > index) {
  break;
}

虽然是很简单的递归题,但主页君是真心用心写了的。而且这是相当经典的递归模板。同学们一定要记住这种模板解法哦!

 1 public List<String> restoreIpAddresses(String s) {
 2         if (s == null) {
 3             return null;
 4         }
 5         
 6         ArrayList<String> ret = new ArrayList<String>();
 7         ArrayList<String> path = new ArrayList<String>();
 8         
 9         dfs(s, 0, path, ret);
10         
11         return ret;
12     }
13     
14     public void dfs(String s, int index, ArrayList<String> path, ArrayList<String> ret) {
15         if (path.size() == 4) {
16             if (index == s.length()) {
17                 StringBuilder sb = new StringBuilder();
18                 for (String str: path) {
19                     sb.append(str);
20                     sb.append('.');
21                 }
22                 
23                 sb.deleteCharAt(sb.length() - 1);
24                 ret.add(sb.toString());
25             }
26             
27             return;
28         }
29         
30         int len = s.length();
31         for (int i = index; i < index + 3 && i < len; i++) {
32             if (s.charAt(index) == '0' && i > index) {
33                 break;
34             }
35             
36             String pre = s.substring(index, i + 1);
37             int num = Integer.parseInt(pre);
38             if (num > 255) {
39                 continue;
40             }
41             
42             path.add(pre);
43             dfs(s, i + 1, path, ret);
44             path.remove(path.size() - 1);
45         }
46     }
View Code

相关文章:

  • 2021-07-26
  • 2022-12-23
  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
  • 2022-02-26
  • 2021-12-27
猜你喜欢
  • 2021-12-04
  • 2022-01-31
  • 2021-09-13
  • 2021-08-09
  • 2021-08-22
  • 2022-03-08
相关资源
相似解决方案