https://leetcode.com/problems/palindrome-partitioning/
1. Use backtracking:
//60 ms 15.8 MBclass Solution {public:vector<vector<string>> partition(string s) {vector<string> path;vector<vector<string>> result;backtrack(s, path, result, 0);return result;}private:bool isPallindrome(string s){int l = 0, r = s.length()-1;while(l < r){if(s[l] != s[r]){return false;}l++;r--;}return true;}void backtrack(string s, vector<string>& path, vector<vector<string>>& result, int pos){int n = s.size();if(pos == n){result.push_back(path);return;}for(int i=1; i<= n - pos; i++){if(isPallindrome(s.substr(pos, i))){path.push_back(s.substr(pos, i));backtrack(s, path, result, pos+i);path.pop_back();}}}};
