131. Palindrome Partitioning

来源:互联网 发布:linux snmp v3 配置 编辑:程序博客网 时间:2024/06/10 16:04

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"]  ]
题意:返回string s的各种回文段划分。

思路:回溯。

class Solution {public:vector<vector<string>> partition(string s) {vector<string> cur;vector<vector<string>> res;backtracking(cur, 0, 0, s, res);return res;}private:void backtracking(vector<string>& cur, int len, int begin, string& s, vector<vector<string>>& res){if (len == s.size()){res.push_back(cur);return;}for (int i = 0; i+begin < s.size(); i++){string tmp = s.substr(begin, i+1);if (isPalindrome(tmp)){cur.push_back(tmp);backtracking(cur, len + tmp.size(), begin + i + 1, s, res);cur.pop_back();}}}bool isPalindrome(string s){int i = 0;int j = s.size() - 1;while (i < j){if (s[i] != s[j]){return false;}i++;j--;}return true;}};









0 0