网址如下:
P1928 外星密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
C++的string真的是太好用辣!
思路就是用一个函数来递归翻译
代码如下:
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
void transform(int loc);
string str;
int main(void)
{
getline(cin, str);
int len = str.size();
for(int i = 0; i < len; i++)
if(str[i] == '[')
{
transform(i);
len = str.size();
i--;
}
else
cout << str[i];
return 0;
}
void transform(int loc)
{
string tmp, s_strTmp;
//获取数字
int num = str[loc + 1] - '0';
int start = loc + 2, end;
if(isdigit(str[loc + 2]))
num = num * 10 + str[loc + 2] - '0', start++;
//获取要解压缩的字符串
for(end = start; str[end] != ']'; end++)
if(str[end] == '[')
transform(end--);
else
tmp.push_back(str[end]);
for(int i = 0; i < num; i++)
s_strTmp += tmp;
//替换原字符串
str.replace(loc, end - loc + 1, s_strTmp);
return;
}