返回滑动窗口中的最大值。
来源,leetcode 每日一题 131. 分割回文串
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
解题思路
- dfs
代码
class Solution {
public:
vector<vector<string>> partition(string s) {
vector<vector<string>> results;
vector<string> temp;
int size = s.length();
if (size == 0) {
return {};
}
dfs(s, temp, results, size, 0);
return results;
}
void dfs(string& s, vector<string>& temp, vector<vector<string>>& results, int& size, int start) {
if (start == size) {
results.push_back(temp);
return;
}
// for (auto& item: temp) {
// cout << item << " ";
// }
// cout << endl;
for (int i = start; i < size; i++) {
if (isPalindom(s, start, i)) {
temp.push_back(s.substr(start, i-start + 1));
dfs(s, temp, results, size, i + 1);
temp.pop_back();
}
}
}
bool isPalindom(string& s, int left, int right) {
for (int i = 0; i <= right-left; i++) {
if (left + i > right-i) {
break;
} else if (s[left+i] != s[right-i]) {
return false;
}
}
return true;
}
};