您的位置:首页 > 其它

Palindrome Partitioning

2015-08-01 10:01 295 查看
Palindrome Partitioning

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 = 
"aab"
,

Return
[
["aa","b"],
["a","a","b"]
]


速度较快的解法,回溯法:

class Solution {
public:
std::vector<std::vector<std::string> > partition(std::string s) {
len = s.size();
std::vector<std::vector<std::string> > res;
std::vector<std::string> pars;
partitionHelper(s, res, pars, 0);
return res;
}
private:
int len;
void partitionHelper(std::string &s, std::vector<std::vector<std::string> > &res, std::vector<std::string> &pars, int begin) {
if (begin == len)
res.push_back(pars);
for (int end = begin; end != len; ++end)
if (isPalindrome(s, begin, end)) {
pars.push_back(s.substr(begin, end - begin + 1));
partitionHelper(s, res, pars, end + 1);
pars.pop_back();
}
}
bool isPalindrome(std::string &s, int begin, int end) {
while (begin <= end)
if (s[begin++] != s[end--])
return false;
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息