Palindrome Partitioning

来源:互联网 发布:数据泄露dlp效果 编辑:程序博客网 时间:2024/05/22 06:44

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"]  ]
class Solution {public:vector< vector<string> > res;void DFS(string& s, int start, vector< vector<bool> > & dp, vector<string>& vec){if (start == s.length()){res.push_back(vec);return;}for (int len = 1; len <= s.length() - start; len++){if (dp[start][len]){vec.push_back(s.substr(start, len));DFS(s, start + len, dp, vec);vec.pop_back();}}}vector<vector<string>> partition(string s){res.clear();vector<vector<bool> > dp(s.length(), vector<bool>(s.length() + 1, false));dp[0][0] = true;for (int i = 0; i < s.length(); i++)dp[i][1] = true;for (int len = 2; len <= s.length(); len++){for (int i = 0; i <= s.length() - len; i++){if (len == 2 && s[i] == s[i+1]) dp[i][2] = true;else if (dp[i+1][len-2] && s[i] == s[i+len-1]) dp[i][len] = true;}}vector<string> vec;DFS(s, 0, dp , vec);return res;}};




0 0
原创粉丝点击