LEETCODE : palindrome-partition(DFS)

 LEETCODE : palindrome-partition(DFS)_第1张图片

江湖传说,如果要输出所有可能的解,往往使用DFS。

如果要输出最优解,或者解的数量,往往使用动态规划DP。

LEETCODE : palindrome-partition(DFS)_第2张图片

 

class Solution {
public:
    vector> partition(string s) {
        vector> res;
        vector cur;
        dfs(s,cur,res);
        return res;
    }
    bool isPalindrome(string s){
        return (s == string(s.rbegin(),s.rend()));
    }
    void dfs(string s,vector &cur,
             vector> &res){
        if("" == s){
            res.push_back(cur);
            return ;
        }
        
        for(int i = 1;i <= s.length();++i){
            string sub = s.substr(0,i);
            if(isPalindrome(sub) == true){
                cur.push_back(sub);
                dfs(s.substr( i, s.length()-i),cur,res);
                cur.pop_back();
            }
        }
    }
};





 

你可能感兴趣的:(leetcode)