DFS求回文串

来源:互联网 发布:linux挂载windows分区 编辑:程序博客网 时间:2024/06/05 13:21

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> > partition(string s){string::size_type length = s.size();if(length == 0){output.clear();return output;}else{output.clear();temper_result.clear();dfs(0,length,s);return output;}}bool ifpalindrome(string& s){int i = 0, j = s.length()-1;while(i < j){if(s[i] != s[j]){return false;}i++;j--;}return true;}void dfs(int begin, int length, string& s){if(begin == length){output.push_back(temper_result);}else{int i;for(i=begin;i<length;i++){string mm =s.substr(begin,i-begin+1);if(ifpalindrome(mm)){temper_result.push_back(mm);dfs(i+1,length,s);temper_result.pop_back();}}}}private:vector< vector<string> > output;vector<string> temper_result;};

0 0
原创粉丝点击