题目链接

leetcode 93. Restore IP Addresses

题意

给定一段序列,判断可能组成ip数的所有可能集合

思路

可以采用模拟或者DFS的想法,把总的ip数分成四段,每段判断是否满足题意

class Solution {
public:
vector<string> ans; vector<string> restoreIpAddresses(string s){
if(!s.size()) return ans; solve(0,0,s,"");
return ans;
} //方法二: dfs
void solve(int p,int cnt,string &s,string tmp){
if(cnt>=4 && p<s.size()) return ; if(p>=s.size()){//分成4段 if(cnt==4){
ans.push_back(tmp);
} return ;
} for(int i=1;i<=3;i++){//每段的长度最长不超过3 if(p+i>s.size()) return; string t=s.substr(p,i);
int it=stoi(t); if(to_string(it)!=t || it>255) continue; // if(!cnt) tmp+=t;
// else tmp+="."+t; solve(p+i,cnt+1,s,tmp+(cnt?"."+t:t)); }
} //方法一:直接遍历所有情况
vector<string> restoreIpAddresses(string s) {
int n=s.size();
if(!n) return ans; for(int a=1;a<=3;a++)
for(int b=1;b<=3;b++)
for(int c=1;c<=3;c++){ int d=n-(a+b+c);
if(d<1 || d>3) continue; string a1=s.substr(0,a);
string b1=s.substr(a,b);
string c1=s.substr(a+b,c);
string d1=s.substr(a+b+c); if(to_string(stoi(a1))!=a1 || to_string(stoi(b1))!=b1 ||
to_string(stoi(c1))!=c1 || to_string(stoi(d1))!=d1) continue;
if(stoi(a1)>255 || stoi(b1)>255 || stoi(c1)>255 || stoi(d1)>255) continue; ans.push_back(a1+"."+b1+"."+c1+"."+d1); }
return ans; } };

最新文章

  1. Could not load file or assembly or one of its dependencies. 试图加载格式不正确的程序。
  2. jquery插件集
  3. 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
  4. CSS 的class属性居然可以并(有点像并,有点像与)操作
  5. NSNumber、NSValue、NSDate、NSObject
  6. Myeclipse的web项目移植到Eclipse中需要添加的包
  7. BZOJ 2456
  8. ruby的gem和boundle安装解决办法
  9. Xamarin开发Android时Visual Studio 2012没有智能提示解决办法
  10. HTTP学习笔记5-常用报头
  11. c++ primer plus(文章6版本)中国版 编程练习答案第八章
  12. scribefire 多博客管理利器 安装详解
  13. 使用Oracle数据库实现树形结构表的子-父级递归查询和删除,通过级联菜单简单举例
  14. celery rabbit mq 详解
  15. wps中如何插入参考文献
  16. Java中static关键字和final关键字
  17. 集合-Comparator和Comparable
  18. python的安装和配置
  19. windows7系统下配置开发环境 python2.7+pyqt4+pycharm
  20. 多目标遗传算法 ------ NSGA-II (部分源码解析)目标函数 problemdef.c

热门文章

  1. idea 中使用Mybatis Generator逆向工程生成代码
  2. .net core WebAPI性能监控-MiniProfiler与Swagger集成
  3. centos 7 让脚本开机运行
  4. CVE-2019-0708_RDP漏洞利用
  5. canvas可视化效果之内阴影效果
  6. ubuntu20.04 LTS 更换国内163源、阿里源、清华源、中科大源
  7. 为什么会有kafka消息系统?小问题藏着大细节!
  8. 开发规范(一) 如何记录日志 By 阿里
  9. springboot项目报错Exception getting JDBC Driver: com.mysql.cj.jdbc.Driver
  10. [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树