LeetCode---Palindrome Partitioning
2015-12-04 17:42
169 查看
题目大意:给出一个字符串,对该字符串进行各种切割,使得切割后的每个子串是回文,找出所有的情况。
算法思想:
整体上采用深度优先搜索的思想。遍历字符串的每一个元素,判断从该元素处断开是否是一个合法方案(即构成回文)若是则递归搜索剩下一部分字符串的可行方案。
代码如下:
算法思想:
整体上采用深度优先搜索的思想。遍历字符串的每一个元素,判断从该元素处断开是否是一个合法方案(即构成回文)若是则递归搜索剩下一部分字符串的可行方案。
代码如下:
class Solution { public: vector<vector<string> > partition(string s) { vector<vector<string> >res; vector<string> path; dfs(s,res,path,0); return res; } void dfs(string s,vector<vector<string> >&res,vector<string> &path,size_t start ){ if(start==s.size()){ res.push_back(path); return ; } for(int i=start;i<s.size();++i){ if(isPalindrome(s,start,i)){ path.push_back(s.substr(start,i-start+1)); dfs(s,res,path,i+1); path.pop_back(); } } } bool isPalindrome(string s,size_t start,size_t end){ while(start<end&&s[start]==s[end]){ ++start; --end; } return start<end?false:true; } };
相关文章推荐
- 14.10.2 Performance and Concurrency Considerations for Online DDL 在线DDL的性能和并发考虑
- android 添加一个简单的延时
- java基于des3的加密解密
- nova conductor
- redis
- iOS 新特性分列式 之 iOS 7.x - 主要内容:扁平 UI、64位支持、多任务加强、Objective-C 模块支持
- 开涛老师的博客汇总 -- Web MVC 开发学习
- datatable分页指南--前台分页和后台分页
- 把opencv Mat 按位存成bmp二值图像 (1bit 1pixel)
- AndroidAnnotations注解说明
- golang返回值为interface{}的类型判断
- 一个包含n个字符的字符串,从第m个字符开始复制成为另外一个字符串
- OC的内存管理
- jMeter使用手记
- jsonp
- uva 725 DIVISION (暴力枚举)
- HTML CSS之FORM
- 机器学习
- 实习整理(十七)
- 20151204 流水账