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"] ]
[Solutions]
To list all possibilities, go directly to DFS
[Code]
class Solution {public: vector<vector<string> > res; vector<vector<string>> partition(string s) { vector<string> partitions; dfs(partitions, s, 0); return res; } void dfs(vector<string> partitions, string &s, int idx) { if (idx >= s.size()) { if (partitions.size() > 0) { res.push_back(partitions); } return; } for (int i = idx; i < s.size(); ++i) { string cur = s.substr(idx, i - idx + 1); if (isPalindrome(cur)) { partitions.push_back(cur); dfs(partitions, s, i + 1); partitions.pop_back(); } } return; } bool isPalindrome(string s) { int len = s.size(); if (len <= 1) return true; int left = 0; int right = len - 1; while (left < right) { if (s[left] != s[right]) return false; ++left; --right; } return true; }};
[Leetcode] palindrome partitioning