Leetcode-93. 复原 IP 地址
链接
93. 复原 IP 地址
题目
有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。
例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。
示例
示例 1:
输入:s = "25525511135"
输出:["255.255.11.135","255.255.111.35"]示例 2:
输入:s = "0000"
输出:["0.0.0.0"]示例 3:
输入:s = "101023"
输出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3
说明
1 <= s.length <= 20
s
仅由数字组成
思路
本题采用回溯的思路,定义point为当前已经用了的小数点的个数,index为当前遍历的下标,对于每个起始位置进行搜索,符合条件的段后面添加分隔点,直到当point为3时,说明已经全部分好了段,检查最后一段是否在0-255之间,是的话这样的划分符合要求,添加到结果字符串当中。
C++ Code
class Solution {
public:vector<string> res;void backtracking(string s, int index, int point){if(point==3){if(check(s.substr(index))) res.push_back(s);return;}for(int i=index;i<s.size();i++){if(check(s.substr(index,i-index+1))){s.insert(s.begin()+i+1,'.');point++;backtracking(s,i+2,point);point--;s.erase(s.begin() + i + 1); }else break; }}bool check(string s){if(s.empty() || s.size()>3 ) return false;//cout << "string s is: " << s << endl;if(s[0]=='0'&&s.size()!=1) return false;if(stoi(s)>255) return false;return true;}vector<string> restoreIpAddresses(string s) {if(s.size()>12) return res;backtracking(s,0,0);return res;}
};
注意
substr函数的两种用法:
假设:string s = “1234567”;
- string sub1 = s.substr(3); //表示从下标3开始一直到结尾:sub1 = “4567”
- string sub2 = s.substr(2, 3); //表示从下标为2开始截取长度为3的子串:sub2 = “345”
Leetcode-93. 复原 IP 地址相关推荐
- LeetCode 93. 复原 IP 地址【字符串,回溯算法】
93. 复原 IP 地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔. 例如:"0.1.2.201" ...
- LeetCode 93. 复原IP地址(回溯)
1. 题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135&q ...
- leetcode 93. 复原IP地址 思考分析
题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255之间组成,且不能含有前导 0),整数之间用 '.' 分隔. ...
- 多看看把,条件太多了--leetcode 93. 复原 IP 地址
难度:中等 频次:62 题目: 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔. 例如:"0.1.2.201&quo ...
- 142. Leetcode 93. 复原 IP 地址 (回溯算法-切割问题)
分析剪枝条件: 1.一开始,字符串的长度小于 4 或者大于 12 ,一定不能拼凑出合法的 ip 地址(这一点可以一般化到中间结点的判断中,以产生剪枝行为); 2.每一个结点可以选择截取的方法只有 3 ...
- leetcode 93.复原IP地址 dfs解法
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135", ...
- LeetCode 93. 复原IP地址
思路: 回溯+剪枝 遍历字符串,先计算第一网段,分别取1 2 3位数字,并组合判断是否符合IP规范, 若符合跳至下一网段,并且索引start挪位,temp+本网段值+"." 递归 ...
- leetcode:491. 递增子序列、17. 电话号码的字母组合、31. 分割回文串、93. 复原 IP 地址(JavaScript)
文章目录 491. 递增子序列 分析 去重 如何保证递增呢? 17. 电话号码的字母组合 思路: 单层递归逻辑 递归终止条件 完整代码 另一种写法 31. 分割回文串 思路:分析题目本题可分为两步 9 ...
- 93. 复原 IP 地址
93. 复原 IP 地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔. 例如:"0.1.2.201" ...
- leetcode系列-93.复原 IP 地址
leetcode系列–第93题.复原 IP 地址 题目描述:有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔.例如:" ...
最新文章
- iOS 根据数组中的字典的value值进行排序
- 年龄测试计算器软件,抖音很火的年龄计算器
- Spring MVC:使用SimpleUrlHandlerMapping的一个简单例子
- SQLServer删除登录帐户
- mysql导入创建表空间_oracle创建表空间 用户 数据库导入和导出(转)
- Oracl数据库中大数据的备份-2
- GitBucket管理员添加人员
- 专为专业音乐行业从业人员打造的AI智能编曲工具:Orb Producer Suite Mac
- pandas如何去掉时间列的小时只保留日期
- .NET 安全编程 阅读笔记(四)
- iOS之UITableView
- 基于51单片机的智能大棚浇花系统设计 花盆浇水灌溉补光散热方案原理图程序
- 芯片短缺:今年圣诞节PS5货量恐不足
- Facebook注册移动应用以投放应用广告
- 苹果手机备忘录内容怎么发送给好友
- 计算机软件著作权源码要求,计算机软件著作权登记源代码-20210527121530.docx-原创力文档...
- [附源码]java毕业设计学习资源共享与在线学习系统
- spring security 3.1中条用js方法登陆后无法回调
- c语言不用strcpy复制字符串,c语言程序(二十三)——字符串复制(不使用strcpy()函数)...
- 一文理清---TSN时间敏感网络
热门文章
- Hadoop是什么?基本概念
- 22牛客多校day1 J - Serval and Essay 启发式合并
- 图形编程丨图形绘制基础imgui篇—D3D9 HOOK 创建内部Imgui窗口
- Python基础入门教学
- SCI、EI、ISTP国际三大检索分别指的是什么?
- MC(monitorcat) 监控军刀
- 区块链教程Fabric1.0源代码分析Ledger(账本)二
- 一文看尽 6篇 CVPR2021 伪装目标检测、旋转目标检测论文
- 反讽检测(Sarcasm Detection)
- 2022软件测试技能 Fiddler HTTP抓包调试工具完整详细教程