[LeetCode]Palindrome Partitioning 找出所有可能的组合回文
2024-09-21 17:02:11
给定一个字符串,切割字符串,这样每个子字符串是一个回文字符串。
要找出所有可能的组合。
办法:暴力搜索+回溯
class Solution {
public:
int *b,n;
vector<vector<string> >ans;
void dfs(int id,string &s,int len){
if(id>=n){
if(len>0){
vector<string>vt;
vt.push_back(s.substr(0,b[0]+1));
for(int i=1;i<len;++i){
vt.push_back(s.substr(b[i-1]+1,b[i]-b[i-1]));
}
ans.push_back(vt);
}
return;
}
int j,k;
b[len]=id;
dfs(id+1,s,len+1);
for(j=id+1;j<n;++j){
for(k=0;id+k<j-k&&s[id+k]==s[j-k];++k);
if(id+k>=j-k){
b[len]=j;
dfs(j+1,s,len+1);
}
}
}
vector<vector<string> > partition(string s) {
n=s.size();
if(n==0)return ans;
if(n==1){
vector<string>vt;
vt.push_back(s);
ans.push_back(vt);
return ans;
}
b=new int[n];
dfs(0,s,0);
return ans;
}
};
版权声明:本文博主原创文章,博客,未经同意不得转载。
最新文章
- 第一篇博客 用笨办法学python-14 提示和传递
- 用Android模拟器也可以开发和测试NFC应用
- web app 禁用手机浏览器缓存方法
- WebService基于SoapHeader实现安全认证
- HDU 5100
- 如何防止Android应用代码被窃
- MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天
- java常用的环境变量配置
- Android权限解释
- 弹幕视频播放app案例分析
- 使用excel整理脚本
- leetcode 最大不重复字符
- 论文笔记: Dual Deep Network for Visual Tracking
- ActionCable的部署(参考Gorails)
- SpringBoot(十一)过滤器和拦截器
- C语言open()函数:打开文件函数(转)
- 使用VS2015 编译 64位的boost库
- 关于GenericJDBCException的问题
- linux shell内置判断
- THUPC2017 小 L 的计算题
热门文章
- c 可变参数 定义可变参数的函数
- HTML5调用摄像头实现拍照功能(兼容各大主流浏览器)
- 遍历指定包名下所有的类(支持jar)(转)
- sqlit使用要点之引入libsqlite3.dylib
- TBDR缺点
- 2014/08/23——OJ出现waiting...
- 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld
- 获取Google音乐的具体信息(方便对Google音乐批量下载)
- C#的百度地图开发(四)前端显示与定位
- hdu4714(树形dp)