报文解压缩(华为机试)

#include<iostream>
#include<string>
#include<stack>
#include<algorithm>
using namespace std;
string op(int num, string& str) {
	string temp;
	for (int i = 0; i < num; ++i) {
		temp += str;
	}
	return temp;
}
int main() {
	string s;
	getline(cin, s);
	stack<char> st;
	string res;
	for (char c : s) {
		if (c != ']') {
			st.push(c);
		}
		else
		{
			string str;
			while (!st.empty() && (st.top()>'9'||st.top()<'0')) {
				if (st.top() == '[') {
					st.pop();
					break;
				}
				str += st.top();
				st.pop();
			}
			reverse(str.begin(), str.end());
			int num = 0;
			while (!st.empty() && st.top() >= '0' && st.top() <= '9') {
				int a = st.top() - '0'; cout << "a=" << a<<' ';
				num *= 10;
				num+= a; cout << "num=" << num << endl;
				st.pop();
			}
			//
			res =str+res;
			res = op(num, res); cout << res<<' ' << num << endl;
		}

	}
	cout << res << endl;
	//1[D3[C2[B1[A]]]] 输出DCBABACBABACBABA;
}
posted @ 2022-11-11 23:01  chunbai11  阅读(177)  评论(0)    收藏  举报