考点
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <bits/stdc++.h>
using namespace std;
string read() { string s; char c; while (cin >> c) { if (c == '[') { int n; cin >> n; string t = read(); while (n--) s += t; } else if (c == ']') break; else s += c; } return s; }
int main() { cout << read(); }
|
思路
字符串的模拟题,先考虑逐个字符读入还是整行读入;很显然,本题应该选择逐字符读入
由于每个闭合的[]实际上就是一个字符串,很容易联想到递归,每次处理完后返回结果字符串
[数字就可以视作递归开始符,只要遇到了[数字就开启新的递归
]可以视作递归结束符,只要遇到了它就返回当前递归的结果字符串
正常字母接在当前递归的结果字符串即可
根据上述思路,就可以编写题解啦