93. Restore IP Addresses
来源:互联网 发布:内蒙古出版社 知乎 编辑:程序博客网 时间:2024/05/21 18:34
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)
分析:按照dfs的方式递归的计算,具体见代码注释。需要注意的一点是,为了加快dfs的回溯速度,应该尽可能对dfs过程进行剪枝。
class Solution { public: vector<string> restoreIpAddresses(string s) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. vector<string> res; string tmpres; restoreIpAddressesRecur(s, 0, 4, tmpres, res); return res; } //从s的start位置开始计算,ip地址还需要num个域(共4个域) //tmpres表示当前计算好的部分ip void restoreIpAddressesRecur(string &s, int start, int num, string &tmpres, vector<string> &res) { int len = s.size(); if(num == 0) { if(start == len)//已经计算好了一个ip { tmpres.erase(--tmpres.end());//去掉最后的“.” res.push_back(tmpres); tmpres.push_back('.'); } return; } //不满足最小或最大长度关系 if(len - start < num || len - start > num*3)return; int tmplen = tmpres.size(); string tmpstr; for(int i = 1; i <= 3 && start + i <= len; i++) {//ip地址的一个域最多包含三个数字 if(validRegion(s, start, start+i-1) == false)continue; tmpstr = s.substr(start, i) + "."; tmpres += tmpstr; restoreIpAddressesRecur(s, start+i, num-1, tmpres, res); tmpres.erase(tmplen, i+1); } } //判断ip地址的一个域是否合法 bool validRegion(string &s, int istart, int iend) { if(iend > istart && s[istart] == '0')return false; int res = 0; for(int i = istart; i <= iend; i++) res = res*10 + (s[i] - '0'); if(res >= 0 && res <= 255)return true; else return false; }};
0 0
- 93.Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- 93. Restore IP Addresses
- Memcached中item锁的粒度
- 锁定客户的六大策略:教你如何将切换成本嵌入商业模式
- 如何长时间高效学习?
- 偶然间做起题来--仅为纪念
- TCP连接端口的状态
- 93. Restore IP Addresses
- HDU 5344 MZL's xor(异或运算)
- 组合数学之母函数问题
- Java抽象类和接口
- xhprof(PHP性能分析工具)
- pyqt 用py2exe打包出错的解决办法
- POJ 1753 Flip Game
- iOS程序启动的时候隐藏状态栏,启动完成之后显示状态栏
- centos yum安装mysql