给定一个字符串,切割字符串,这样每个子字符串是一个回文字符串。

要找出所有可能的组合。

办法:暴力搜索+回溯

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;
}
};

版权声明:本文博主原创文章,博客,未经同意不得转载。

最新文章

  1. 第一篇博客 用笨办法学python-14 提示和传递
  2. 用Android模拟器也可以开发和测试NFC应用
  3. web app 禁用手机浏览器缓存方法
  4. WebService基于SoapHeader实现安全认证
  5. HDU 5100
  6. 如何防止Android应用代码被窃
  7. MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天
  8. java常用的环境变量配置
  9. Android权限解释
  10. 弹幕视频播放app案例分析
  11. 使用excel整理脚本
  12. leetcode 最大不重复字符
  13. 论文笔记: Dual Deep Network for Visual Tracking
  14. ActionCable的部署(参考Gorails)
  15. SpringBoot(十一)过滤器和拦截器
  16. C语言open()函数:打开文件函数(转)
  17. 使用VS2015 编译 64位的boost库
  18. 关于GenericJDBCException的问题
  19. linux shell内置判断
  20. THUPC2017 小 L 的计算题

热门文章

  1. c 可变参数 定义可变参数的函数
  2. HTML5调用摄像头实现拍照功能(兼容各大主流浏览器)
  3. 遍历指定包名下所有的类(支持jar)(转)
  4. sqlit使用要点之引入libsqlite3.dylib
  5. TBDR缺点
  6. 2014/08/23——OJ出现waiting...
  7. 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld
  8. 获取Google音乐的具体信息(方便对Google音乐批量下载)
  9. C#的百度地图开发(四)前端显示与定位
  10. hdu4714(树形dp)