leetcode Restore IP Addresses
来源:互联网 发布:java 解压加密rar文件 编辑:程序博客网 时间:2024/06/08 15:59
题目 :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)
思路:
体思路就是深度优先搜索,首先看到边界条件没,如果没有,就深度搜索:
一开始搜索1个字符和剩下的字符串,判断该字符的index是否越界了,对于剩下的字符串递归;
然后是2个字符和剩下的字符串,判断这2个字符的首字符是否是0,对于剩下的字符串递归;
然后是3个字符和剩下的字符串,判断这3个字符的首字符是否是0,并且这3个字符组成的数字是否小于等于255,对于剩下的字符串递归。
class Solution {public: vector<string> restoreIpAddresses(string s) { vector<string> restoreIp; string ip; if(s.length()>12) return restoreIp; dfsIp(s,0,0,ip,restoreIp); return restoreIp; } //s数字字符串串 //start表示当前dfs到的s的下标 //ipNum表示ip地址的第几个数字,4.3.2.1里面4对应的ipNum为1,3对应的是2... //ip记录可能的ip临时值 //restoreIp记录所有可能的ip void dfsIp(string s, int start, int ipNum, string ip, vector<string> &restoreIp){ //判断结束条件,合理的情况 if(start == s.size() && ipNum == 4){ ip.resize(ip.size()-1); //去掉最后多于的. restoreIp.push_back(ip); return; } //判断结束条件,不合理的情况 if((s.size()-start)>(4-ipNum)*3) return ; if((s.size()-start)<(4-ipNum)) return ; //核心算法,dfs深度优先遍历, //首先遍历ip字段长度为1的情况,其次遍历为2,最后遍历字段长度为3的 int num=0; for(int i=start; i<start+3; i++){ num = num*10 + (s[i]-'0'); if(num<=255){ ip += s[i]; dfsIp(s,i+1,ipNum+1,ip+'.',restoreIp); } if(num==0){ break; } } }};
0 0
- LeetCode: Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- [LeetCode]Restore IP Addresses
- LeetCode:Restore IP Addresses
- LeetCode Restore IP Addresses
- [leetcode] Restore IP Addresses
- LeetCode:Restore IP Addresses
- [LeetCode] Restore IP Addresses
- LeetCode - Restore IP Addresses
- LeetCode | Restore IP Addresses
- 【leetcode】Restore IP Addresses
- Leetcode: Restore IP Addresses
- leetcode Restore IP Addresses
- leetcode Restore IP Addresses
- [LeetCode] Restore IP Addresses
- Leetcode: Restore IP Addresses
- [LeetCode] Restore IP Addresses
- 最大熵理论及其应用
- Android 系统对话框demo
- 测试用例的设计-提高测试覆盖率
- 一些好的博客
- hdu2089(数位DP)
- leetcode Restore IP Addresses
- 财宝通网络pos机讲解从零积蓄到月利润数万 看负翁如何创业变富翁
- 水晶报表中"已达到系统管理员配置的最大报表处理作业数限制"错误的处理
- Oracle 表空间问题
- box2d 在lua中的运用(Box2D物理引擎)
- 新长城 Dom Day01
- 在Word 2007中添加参考文献及其引用的方法
- oracle 正则表达式、分析函数、connect等字句
- 多米诺骨牌 欧拉回路的求解