Palindrome Partitioning
来源:互联网 发布:企业域名是什么意思 编辑:程序博客网 时间:2024/06/04 18:37
暴力搜索寻找回文字符串(所有字符扫一遍),找到后用dfs做排列组合(这两步同时进行),空间复杂度时间复杂度双高,时间复杂度大概是O(n^2)
Palindrome Partitioning II 的解法与这道题大体相同,只不过为了节省时间,用了DP来找回文字符串,比上面提到的找回文方法好一些
class Solution {public:vector<vector<string> > partition(string s){vector<vector<string> > result;vector<string> list;if (s.size() == 0)return result;calResult(result, list, s);return result;}bool isPalindrome(string str){int i = 0;int j = str.size() - 1;while (i < j) {if (str[i] != str[j]) {return false;}i++;j--;}return true;}void calResult(vector<vector<string> > &result, vector<string> list, string str){//当处理到传入的字符串长度等于0,则这个集合list满足条件,加入到结果集中if (str.length() == 0)result.push_back(vector<string>(list));int len = str.length();//递归调用//字符串由前往后,先判断str.substring(0, i)是否是回文字符串//如果是的话,继续调用函数calResult,把str.substring(i)字符串传入做处理for (int i = 1; i <= len; ++i) {string subStr = str.substr(0, i);if (isPalindrome(subStr)) {list.push_back(subStr);string restSubStr = str.substr(i, str.size() - 1);calResult(result, list, restSubStr);list.pop_back();}}}};
0 0
- Palindrome partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- UVALive 6590
- charles4.0破解和手机抓包
- 隐藏apk图标
- [转]C++回顾之static与单例模式
- 利用Mongodb的复制集搭建高可用分片,Replica Sets + Sharding的搭建过程
- Palindrome Partitioning
- iOS开发之CocoaPods使用
- Android app 卡顿分析
- 三个空饮料瓶可以换一瓶饮料,给你1箱(50瓶)饮料,你能喝多少瓶饮料?
- 如何为控件设置默认值
- 说说最近项目中的几个坑
- 精读OSAL --按键的执行流程(hal_key.c onboard.c)
- 基于SVN的项目管理——集中与分散
- 处理百万级以上的数据提高查询速度的方法