class Solution {
public:
vector
<vector
<string
>>result
;
vector
<string
>temp_str
;
bool isPalindrome(string substr
) {
int left
= 0, right
= substr
.size() - 1;
while(left
< right
) {
if (substr
[left
++] != substr
[right
--]) {
return false;
}
}
return true;
}
void recursion(string s
, int left
, int right
) {
if(left
> right
) {
result
.push_back(temp_str
);
return;
}
for(int i
= 1; i
<= right
- left
+ 1; i
++) {
if(isPalindrome(s
.substr(left
, i
))) {
temp_str
.push_back(s
.substr(left
, i
));
recursion(s
, left
+ i
, right
);
temp_str
.pop_back();
}
}
}
vector
<vector
<string
>> partition(string s
) {
recursion(s
, 0, s
.size() - 1);
return result
;
}
};
转载请注明原文地址:https://ipadbbs.8miu.com/read-18694.html