标签:style blog io color ar os for sp on
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"]
]
[解题思路]
由于要求列出所有的可能,直接上dfs
[代码]
class Solution {
public:
vector<vector<string> > res;
vector<vector<string>> partition(string s) {
vector<string> partitions;
dfs(partitions, s, 0);
return res;
}
void dfs(vector<string> partitions, string &s, int idx) {
if (idx >= s.size()) {
if (partitions.size() > 0) {
res.push_back(partitions);
}
return;
}
for (int i = idx; i < s.size(); ++i) {
string cur = s.substr(idx, i - idx + 1);
if (isPalindrome(cur)) {
partitions.push_back(cur);
dfs(partitions, s, i + 1);
partitions.pop_back();
}
}
return;
}
bool isPalindrome(string s) {
int len = s.size();
if (len <= 1) return true;
int left = 0;
int right = len - 1;
while (left < right) {
if (s[left] != s[right]) return false;
++left;
--right;
}
return true;
}
};[Leetcode]Palindrome Partitioning
标签:style blog io color ar os for sp on
原文地址:http://blog.csdn.net/algorithmengine/article/details/40826161