LeetCode93—Restore IP Addresses
LeetCode93—Restore IP Addresses
类似路径搜索问题,IP地址每一小段的范围是0~255,对于输入的字串来说,考虑长度分别为1,2,3这三种情况。
原题
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)
分析
想象一个树。一共四层,每一层代表ip地址的小段,每一层必须满足条件”0~255”(1位数到3位数),且不能出现”01” “024”这种首字母为0的情况。
递归搜索结果,返回的条件:
1. 收集满4段,并且每段有效
2. 输入串s的字符全部用完
对于第2个条件,我之前的想法是,当收集满4段之后,把这4段长度加起来与s.size()
比较,后来网上看到一种更好的方法:让s.size()
和index
(递归变量)比较,这样效率更高,不用每次循环计算长度,均在代码中注释。
代码
class Solution {
private:bool valid(string s){if (s.size() == 2){if (s[0] == '0')//"01"情况排除return false;}if (s.size() == 3){if (s[0] == '0' || atoi(s.c_str()) > 255)//除了"001"还要排除大于255return false;}return true;}void help(string s, int len, vector<string>& tmpRes, vector<string>&result, int index){if (tmpRes.size() == 4){//当满足条件时,s里面的字符肯定用完,i==s.size()-1,则index==i+1==s.size()if (index == s.size()){string ip;for (int i = 0; i < tmpRes.size(); i++){ip += (tmpRes[i] + '.');}ip.pop_back();result.push_back(ip);}return;//下述方法每次都计算ip的长度,效率较低/*string ip;for (int i = 0; i < tmpRes.size(); i++){ip += (tmpRes[i] + '.');}ip.pop_back();if (ip.size() == len + 3){result.push_back(ip);}elsereturn;*/}string str;for (int i = index; (i < len) && (str.size()<3); i++){str.push_back(s[i]);if (valid(str)){tmpRes.push_back(str);help(s, len, tmpRes, result, i + 1);tmpRes.pop_back();}}}
public:vector<string> restoreIpAddresses(string s) {vector<string>result;vector<string>tmpRes;help(s, s.size(), tmpRes, result, 0);return result;}
};
LeetCode93—Restore IP Addresses相关推荐
- [LeetCode]93.Restore IP Addresses
题目 Given a string containing only digits, restore it by returning all possible valid IP address comb ...
- 【DFS + backtrack】LeetCode 93. Restore IP Addresses
LeetCode 93. Restore IP Addresses Solution1:我的答案 怎么就这么慢... class Solution { public:vector<string& ...
- [Swift]LeetCode93. 复原IP地址 | Restore IP Addresses
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- [LeetCode] Restore IP Addresses 复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- [LeetCode] Restore IP Addresses 复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- Restore IP Addresses leetcode java
题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...
- 93. Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- LeetCode:Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- LeetCode 93. Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- 【leetcode刷题笔记】Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
最新文章
- MXNET gluon自定义损失函数
- PHPExcel报错:谷歌浏览器显示网页可能暂时无法连接,或者它已永久性地移动到了新网址的原因?
- LintCode-A + B 问题
- 使用jupyter notebook打开.ipynb文件
- 7月SCI/SSCI期刊变动,警惕这5本被剔除
- 电磁流量计的工作原理
- 进销存mysql数据库_进销存管理系统数据库设计
- 10大漏洞评估和渗透测试工具
- 一个屌丝程序猿的人生(三十二)
- javascript基础常识问答(五)
- 生成带微信头像的用户二维码
- Fiddler - The system proxy was changed. Click to reenable capturing.
- 云原生、工业互联网之浅见
- 微信小程序:点击图片进行预览
- 幻灯片自动播放的实现
- iPhone越狱后导致无法快充的问题,iPhone X无法18瓦快充
- vue鼠标悬停出现悬浮框(简易版实现)
- go程序设计语言第四章-组合类型
- 苹果手机php怎么更新,Apple Watch固件系统怎么更新升级?
- Jiss Wang:Whitecoin白币新生态体系中的落地应用