Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 131. Palindrome Partitioning
題目:

解答:
class Solution {
public:
vector<vector<string>> partition(string s) {
vector<string> q;
vector<vector<string>> ans;
auto is_pali = [&](int l, int r) -> bool {
while (l < r) {
if (s[l++] != s[r--]) {
return false;
}
}
return true;
};
auto dfs = [&](this auto&& dfs, int start) -> void{
if (start == s.size()) {
ans.push_back(q);
return;
}
for (int i = start; i < s.size(); ++i) {
if (is_pali(start, i) == false) {
continue;
}
q.push_back(s.substr(start, i - start + 1));
dfs(i + 1);
q.pop_back();
}
};
dfs(0);
return ans;
}
};