LintCode 136. 分割回文串
Posted j1ac
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 136. 分割回文串相关的知识,希望对你有一定的参考价值。
给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回s所有可能的回文串分割方案。
样例
给出 s = "aab"
,返回
[
[“aa”, “b”],
[“a”, “a”, “b”]
]
分析:采用深度优先搜索即可,这种回文串的题目一上来我想到的居然是用线性规划。。。绕了好大的坑,使用深度优先搜索十分方便。
代码:
class Solution { public: /* * @param s: A string * @return: A list of lists of string */ bool isPalindromic(string &s){ int i=0,j=s.length()-1; while(i<j){ if(s[i++]!=s[j--]) return false; } return true; } void dfs(vector<vector<string>> &ans,vector<string> &vec,string &s,int pos){ if(pos==s.length()){ ans.push_back(vec); } for(int i=pos;i<s.length();i++){ string str=s.substr(pos,i-pos+1); if(isPalindromic(str)){ vec.push_back(str); dfs(ans,vec,s,i+1); vec.pop_back(); } } } vector<vector<string>> partition(string &s) { vector<vector<string> > ans; vector<string> vec; dfs(ans,vec,s,0); return ans; } };
以上是关于LintCode 136. 分割回文串的主要内容,如果未能解决你的问题,请参考以下文章