天天看點

leetcode 131: Palindrome Partitioning

class Solution {
public:
    vector<vector<string>> partition(string s) {
        vector<vector<string> > res;
        vector<string> set;
        dfs(s,set,res);
        return res;
    }
    void dfs(string s,vector<string>& set,vector<vector<string> >& res)
    {
        if(s.empty())
        {
            res.push_back(set);
            return;
        }
        for(int i=0;i<s.size();i++)
        {
            string temp=s.substr(0,i+1);
            if(isPalindrome(temp))
            {
                set.push_back(temp);
                dfs(s.substr(i+1),set,res);
                set.pop_back();
            }
        }
    }
    bool isPalindrome(string s)
    {
        int l=0,r=s.size()-1;
        while(l<r)
        {
            if(s[l++]!=s[r--])
                return false;
        }
        return true;
    }
};