class Solution { public: string compress(string str) { stack<char> st; for (int i = 0; i < str.size(); i++) { //HG[3|B[2|CA]]F if (str[i] == ']') { string tmp;//CA while (!st.empty() && st.top() != '|') { tmp = st.top() + tmp; st.pop(); } st.pop();//pop()'|' string s1 = "";//s1代表tmp的叠加次数 while (!st.empty() && st.top() != '[') { s1 = st.top() + s1; st.pop(); } st.pop();//pop'[' int t1 = stoi(s1); string s2 = "";//s2代表哦解压缩后重新压入栈中的srting while (t1) { s2 += tmp; t1--; } for (int j = 0; j < s2.size(); j++) st.push(s2[j]); }else{ st.push(str[i]); } } string ans = ""; while (!st.empty()) { ans = st.top() + ans; st.pop(); } return ans; } };