码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Restore IP Addresses

时间:2015-10-29 23:20:11      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

原题链接在这里:https://leetcode.com/problems/restore-ip-addresses/

DFS, 递归解决。IP 地址一共有四段。period来记录段数,从0开始,当period == 3时是说明到了最后一段,把剩下的当成最后一段,判断是否合法。

加上的新字符必须是合法的,判断合法首先看开头是不是‘0‘. 若是,return s.equals("0").

若开头不是‘0‘, 注意观察这段string对应的值是不是在(0,255]范围内。

所花时间是指数量级的。

AC Java:

 1 public class Solution {
 2     public List<String> restoreIpAddresses(String s) {
 3         List<String> res = new ArrayList<String>();
 4         if(s == null || s.length() < 4 || s.length() > 12){
 5             return res;
 6         }
 7         dfs(s,0,"",res);
 8         return res;
 9     }
10     
11     private void dfs(String s, int period, String str, List<String> res){
12         if(period == 3 && isValid(s)){
13             res.add(str+s);
14             return;
15         }
16         for(int i = 0; i<3 && i<s.length()-1; i++){
17             String sub = s.substring(0,i+1);
18             if(isValid(sub)){
19                 dfs(s.substring(i+1, s.length()), period+1, str+sub+".", res);
20             }
21         }
22     }
23     //Check if s is valid
24     private boolean isValid(String s){
25         if(s.charAt(0) == ‘0‘){
26             return s.equals("0");
27         }
28         int num = Integer.valueOf(s);
29         if(num>0 && num<256){
30             return true;
31         }else{
32             return false;
33         }
34     }
35 }

 

LeetCode Restore IP Addresses

标签:

原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/4921883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!