题目:

Given a string containing only digits, restore it by returning all possible valid IP address combinations. (Medium)

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

分析:

使用回溯法即可。helper函数用来处理DFS过程,isValid判断一个子串是否符合IP地址一个点分十进制的一块。

注意在isValid中要除去类似00,01这种0打头的情况。

代码:

 class Solution {
private:
vector<string> result;
bool isValid(const string& s) {
if (s[] == '' && s.size() > ) { // for case like "00.122.122.122"
return false;
}
int num = stoi(s);
if (num >= && num <= ) {
return true;
}
return false;
}
void helper(const string& s, string curS, int start, int step) {
if (step == ) {
if (start != s.size()) {
return;
}
curS.pop_back();
result.push_back(curS);
return;
}
for (int i = ; i <= ; ++i) {
if (start + i <= s.size()) {
string tempS = s.substr(start, i);
if (isValid(tempS)) {
string newS = curS + tempS;
newS.push_back('.');
helper(s, newS, start + i, step + );
}
}
}
}
public:
vector<string> restoreIpAddresses(string s) {
string curS;
helper(s, curS, , );
return result;
}
};

最新文章

  1. Android中的自定义视图控件
  2. shell脚本的执行
  3. mysql与oracle的存储过程有什么区别?
  4. 解决Cannot find or open the PDB file问题
  5. iphone/ipad关于size, frame and bounds总结和UIScroll view学习笔记
  6. JavaScript宝座:七大框架论剑
  7. [记录] nicescroll 在bootstrap tabs中工作
  8. Android开发之Action Bar
  9. Substrings
  10. IOS学习之路八(GCD与多线程)
  11. Augular JS里的各种ng
  12. MyEclipse 2014 破解版下载:我有,需要的给我说一声,给你发过去
  13. hset和hget
  14. 编程菜鸟的日记-《软件测试》Ron Patton著-读书笔记
  15. Windows安装activemq
  16. DDR3初识
  17. 一些hue的参考网址
  18. vue组件之时间组件
  19. 学习windows编程 day4 之 盯裆猫
  20. Project Euler Problem6

热门文章

  1. JAVA面试常见问题之数据库篇
  2. Winform 分页
  3. 一些js面试高频知识点的总结
  4. warning: deprecated conversion from string constant to &#39;char*
  5. maven打包时无法识别lombok中@Data生成的get set方法
  6. 洛谷P2859 [USACO06FEB]摊位预订Stall Reservations
  7. 获取电脑名和Ip
  8. 利用SQL查询扶贫对象医保报销比率的审计方法
  9. CEF 框架使用集锦
  10. oracle 索引监控