博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Restore IP Addresses
阅读量:5241 次
发布时间:2019-06-14

本文共 1591 字,大约阅读时间需要 5 分钟。

原题链接在这里:

题目:

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)

题解:

Backtracking.

IP规则, 一共有四段. 每段数字在[0,255], 但当一段起始是0时, 它唯一的合法规则就是单独一个0. 

一共四段, dfs时用count计数现在是第几段. 到了第四段并且正好走到了s的末位, 把当前item加到res中.

Time Complexity: exponential. Space: O(1). 最多4层stack.

AC Java:

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

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/4921883.html

你可能感兴趣的文章
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>