pg

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.

Example:

Input: “aab”
Output:
[
[“aa”,”b”],
[“a”,”a”,”b”]
]


backtracking

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
bool (string s){
int len = s.length();
for(int i = 0; i < len/2; i++){
if(s[i] != s[len-i-1])
return false;
}
return true;
}
void help(string s, vector<string>& cur, set<vector<string>>& res){
if(s == ""){
res.insert(cur);
return;
}
for(int i = 1; i <= s.length(); i++){
string temp = s.substr(0,i);
if(isPalindrome(temp)){
cur.push_back(temp);
help(s.substr(i, s.length()-i), cur, res);
cur.erase(cur.end());
}
}
}

vector<vector<string>> partition(string s) {
set<vector<string>> resset;
vector<string> cur;
help(s, cur, resset);
vector<vector<string>> res(resset.begin(), resset.end());
return res;
}