[LeetCode]Palindrome Partitioning

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 {
private:
    vector<vector<string> > res;
public:
    void DFS(string s, vector<string> &ans)
    {
        if(s.size()<1) 
        {
            res.push_back(ans);
            return;
        }
        for(int i=0;i<s.size();i++)
        {
            int start=0;
            int end=i;
            while(start<end)
            {
                if(s[start]==s[end])
                {
                  start++;
                  end--;
                }
                 else break;
            }
            if(start>=end)
            {
                ans.push_back(s.substr(0,i+1));
                DFS(s.substr(i+1),ans);
                ans.pop_back();
            }
        }
    }
    vector<vector<string>> partition(string s) {
        res.clear();
        vector<string> ans;
        DFS(s,ans);
        return res;
    }
};

  

posted @ 2014-03-12 21:27  七年之后  阅读(127)  评论(0编辑  收藏  举报