Leetcode Decode String

来源:互联网 发布:怎么去兼职做美工外包 编辑:程序博客网 时间:2024/05/29 07:56

题意:将字符串展开,数字表示重复的次数,方括号中表示重复的内容。

思路:DFS,因为可能有嵌套,所以将方括号中的内容进行搜索。

class Solution {public:    string decodeString(string s) {        return dfs(s);    }        string dfs(string s) {        if(s.length() == 0) return s;                string re;        string num;        for(int i = 0; i < s.length(); ++ i) {            if(s[i] >= '0' && s[i] <= '9') {                num += s[i];                continue;            }            if(s[i] == '[') {                int mark = 1;                string subs;                while( ++ i < s.length()) {                    if(s[i] == ']' && mark == 1) {                        break;                    }                    if(s[i] == '[') {                        mark ++;                    }                    if(s[i] == ']') {                        mark --;                    }                    subs += s[i];                }                                string tempre = dfs(subs); //cout << tempre << "  " << subs << endl;                //cout << num << endl;                int count = std::stoi(num); num =""; //cout << count << endl;                for(int j = 0; j < count; ++ j)                    re += tempre;                continue;            }            re += s[i];                    }                return re;    }};


0 0