Leetcode 分割回文串

給定一個字符串 s,將 s 分割成一些子串,使每個子串都是迴文串。

返回 s 所有可能的分割方案。

示例:

輸入: "aab"
輸出:
[
  ["aa","b"],
  ["a","a","b"]
]

 

解題思路: dfs找出所有的合法情況即可。

class Solution {
public:
    vector<vector<string> >v;
    
    bool judge(string s){
        int l = 0, r = s.size()-1;
        while(l < r){
            if(s[l] != s[r]) return false;
            l++ ,r-- ;
        }
        return true;
    }
    
    
    void dfs(int now, int n, vector<string > &tmp, string str){
        
        if(now == n){
            v.push_back(tmp);
            return ;
        }
        
        for(int i=now; i < n; i++){
            
            string newstr = str.substr(now, i-now+1);
            if(judge(newstr)){
                tmp.push_back(newstr);
                dfs(i+1, n, tmp, str);
                tmp.pop_back();
            }
        }
    }
    
    vector<vector<string>> partition(string s) {
        vector<string >tmp;
        dfs(0, s.size(), tmp, s);
        return v;
    }
    
    
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章