leetcode 93. Restore IP Addresses(DFS, 模拟)
2024-10-17 06:15:16
题目链接
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;
}
};
最新文章
- Could not load file or assembly or one of its dependencies. 试图加载格式不正确的程序。
- jquery插件集
- 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
- CSS 的class属性居然可以并(有点像并,有点像与)操作
- NSNumber、NSValue、NSDate、NSObject
- Myeclipse的web项目移植到Eclipse中需要添加的包
- BZOJ 2456
- ruby的gem和boundle安装解决办法
- Xamarin开发Android时Visual Studio 2012没有智能提示解决办法
- HTTP学习笔记5-常用报头
- c++ primer plus(文章6版本)中国版 编程练习答案第八章
- scribefire 多博客管理利器 安装详解
- 使用Oracle数据库实现树形结构表的子-父级递归查询和删除,通过级联菜单简单举例
- celery rabbit mq 详解
- wps中如何插入参考文献
- Java中static关键字和final关键字
- 集合-Comparator和Comparable
- python的安装和配置
- windows7系统下配置开发环境 python2.7+pyqt4+pycharm
- 多目标遗传算法 ------ NSGA-II (部分源码解析)目标函数 problemdef.c
热门文章
- idea 中使用Mybatis Generator逆向工程生成代码
- .net core WebAPI性能监控-MiniProfiler与Swagger集成
- centos 7 让脚本开机运行
- CVE-2019-0708_RDP漏洞利用
- canvas可视化效果之内阴影效果
- ubuntu20.04 LTS 更换国内163源、阿里源、清华源、中科大源
- 为什么会有kafka消息系统?小问题藏着大细节!
- 开发规范(一) 如何记录日志 By 阿里
- springboot项目报错Exception getting JDBC Driver: com.mysql.cj.jdbc.Driver
- [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树