LeetCode_Palindrome Partitioning

时间:2024-12-26 21:04:56
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:
bool isPalindrome(const string &s, int start, int end)
{
assert(start< len && end < len) ;
if(start > end) return false ;
while(start < end)
{
if(s[start] != s[end])
return false; start++;
end --;
}
return true;
}
void DFS(const string &s,int start, vector<string> p)
{
if(start == len) {
result.push_back(p);
return ;
} for(int i = start; i< len ; i++)
{
if(isPalindrome(s,start, i))
{
p.push_back(s.substr(start, i - start +));
DFS(s, i+, p);
p.pop_back();
}
}
}
vector<vector<string>> partition(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
result.clear();
len = s.size(); if(len == ) return result;
vector<string> p;
DFS(s, , p); return result ;
}
private:
int len ;
vector<vector<string>> result;
};