首页 > 其他 > 详细

LeetCode Restore IP Addresses

时间:2015-10-29 23:18:03      阅读:310      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!