LeetCode:Palindrome Partitioning(DP TLE)
2015-08-21 16:03
323 查看
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s =
Return
动规还TLE 我也是醉了!
Return all possible palindrome partitioning of s.
For example, given s =
"aab",
Return
[ ["aa","b"], ["a","a","b"] ]
动规还TLE 我也是醉了!
class Solution { public: vector<vector<string>> partition(string s) { //dp解法 /*用来记录s[i]到s[j]是否为palindrome dp[i][j] 1、s[i]==s[j]&&j-i<2 2、s[i]==s[j]&&s[i+1]到s[j-1]为palindrome 所以事先要知道dp[i+1][j-1] i是s.length-- j从i++ */ const int n=s.size(); bool dp ; fill_n(&dp[0][0],n*n,false); for(int i=s.size()-1;i>=0;i--) for(int j=i;j<n;++j) if(s[i]==s[j]&&(j-i<2)||dp[i+1][j-1]) dp[i][j]=true; //开始根据dp[i][j]截取字符串 获得结果 vector<vector<string>> sub_palins ; for(int i=n-1;i>=0;i--) for(int j=i;j<n;++j) if(dp[i][j]) { const string palindrome=s.substr(i,j-i+1); if(j+1<n) for(auto v:sub_palins[j+1]) { v.insert(v.begin(),palindrome); sub_palins[i].push_back(v); } else{ sub_palins[i].push_back(vector<string>{palindrome}); } } return sub_palins[0]; } };
相关文章推荐
- java变量类型
- Android Day01笔记
- div占据整个body
- Dynamics AX2012 标准权限控制工作原理
- 快速排序问题
- lwip—mem_init和mem_malloc详解[转载]
- 二分答案 POJ3273
- Importing a Microsoft Excel Source Definition
- Android 点击两次返回退出应用
- 寒冰王座
- mac系统使用技巧链接汇总
- 文章标题
- GDI+画电子印章
- 剑指off-判断5张牌是否是顺子
- WPF 自定义控件依赖属性怎么实时变化?
- 利用mod_wsgi部署Django应用
- C#获取网络图片显示到picturebox
- Linux 查看文件和文件夹大小
- 电赛总结(四)——波形发生芯片总结之AD9834
- php-fpm 启动参数及重要配置详解