lintcode-分割回文串-136
2015-10-14 21:48
302 查看
给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回s所有可能的回文串分割方案。
样例
给出 s = "aab",返回
[
["aa","b"],
["a","a","b"]
]
返回s所有可能的回文串分割方案。
样例
给出 s = "aab",返回
[
["aa","b"],
["a","a","b"]
]
class Solution { public: vector<vector<string>> partition(string s) { solve(s,s.length(),0); return result; } private: bool isPalindrome(const string &s){ int begin=0,end=s.length()-1; while(begin<end){ if(s[begin]!=s[end]) return false; ++begin; --end; } return true; } void solve(const string &s,int size,int pos){ if(pos==size){ result.push_back(path); return ; } for(int i=pos;i<size;++i){ string prefix=s.substr(pos,i-pos+1); //以s[pos]字符开头的所有前缀 if(!isPalindrome(prefix)) //不是回文串就继续找 continue; path.push_back(prefix); //加入path solve(s,size,i+1); //从已经找到的回文串的下一个字符继续找 path.pop_back(); //记得移除,path还要继续复用 } } vector<string> path; vector<vector<string> > result; };
相关文章推荐
- 字符串的排序
- VMware提示:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。
- virtualbox 安装
- More Effective C++ 条款35 让自己习惯于标准C++ 语言
- 《Android进阶》Sqlite的使用
- 服务器上的 Git - 在服务器上搭建 Git
- linux shell实现随机数几种方法分享(date,random,uuid)
- PostgreSQL jdbc 9.4 支持load balance 和 connection failover了
- android -- service
- <学习笔记>java中运算符的英文表示
- GUI显示系统之SurfaceFlinger
- Java从入门到精通12-BorderLayout布局
- linux raid技术
- ios 应用发布appStore
- poj 3046 分组背包
- 从文件系统恢复遗失的UNLOGGED table's datafile.
- python视频教程大全集下载啦
- Hadoop中Partition解析
- 两款CHM文件制作方法
- 关于java初始化块的一些细节问题