纯栈 求救!!!有大佬看看嘛
查看原帖
纯栈 求救!!!有大佬看看嘛
568109
Shirley410楼主2022/3/23 22:52
#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main(){
    string s;
    stack <string> ans;
    cin >> s;
    int j = 0;          //复制倍数
    int n = 0;          //复制字符串的长度
    int z = 1;          //几重压缩
    int k = 0;
    string s2;
    for (int i = s.length()-1; i >= 0; --i){
        if (s[i] != ']') {
            ans.push(string(1,'s[i]'));
        }
        else if (s[i] == ']' && s[i - 1] != ']'){
            for (k = i - 1; k >= 0; k--){
                if (s[k] >= '0' && s[k] <= '9'){
                    if (s[k - 1] >= '0' && s[k - 1] <= '9'){
                        j = (s[k - 1] - '0') * 10 + (s[k] - '0');
                        k -= 1;
                        n = i - k - 2;
                        s2 = s.substr(k + 2, n);
                        i = k - z - 2 * z + 2;
                        break;
                    }
                    else{
                        j = s[k] - '0';
                        n = i - k - 1;
                        s2 = s.substr(k + 1, n);
                        i = k - z - z + 1;
                        break;
                    }
                }
            }
            for (; z > 0; z--){
                for (int m = j; m > 0; m--){
                    ans.push(s2);
                }
            }
            z = 1;
        }
        else{
            z++;
        }
    }
    while (!ans.empty()){
        cout << ans.top();
        ans.pop();
    }
    cout << endl;
    return 0;
}

为什么输入测试数据为"]]FUNFUNFUN"?

2022/3/23 22:52
加载中...