680. Split String

来源:互联网 发布:淘宝买家常问问题 编辑:程序博客网 时间:2024/05/21 10:28

描述:

Give a string, you can choose to split the string after one character or two adjacent characters, and make the string to be composed of only one character or two characters. Output all possible results.

样例:

Given the string "123" return [["1","2","3"],["12","3"],["1","23"]] 。

标签:回溯法 深度优先搜索

思路:

判断字符串长度,如果长度为一或二,将其直接添加到当前vector中;

                             如果长度大于二,将其拆分成左右子串,其中左子串长度为一或二,左子串直接加入当前vector,                                右子串递归调用函数处理。

代码:

class Solution{
    public:
    vector<vector<string>> v;
    vector<vector<string>> splitString(string& s){
        vector<string> temv;
        if(s!=""){
        Division(s,temv);
        }
        else{
            v.push_back(temv);
        }
        return v;
    }
    void Division(string s,vector<string> temv){
        if(s.length()==1){
            temv.push_back(s);
            v.push_back(temv);
            return;
        }
        string sl=s.substr(0,1);
        string sr=s.substr(1,s.length()-1);
        temv.push_back(sl);
        Division(sr,temv);
        temv.erase(temv.end()-1);
        if(s.length()==2){
            temv.push_back(s);
            v.push_back(temv);
            return;
        }
        sl=s.substr(0,2);
        sr=s.substr(2,s.length()-2);
        temv.push_back(sl);
        Division(sr,temv);
    }
};


原创粉丝点击