网址如下:
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--;}elsecout << 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--);elsetmp.push_back(str[end]);for(int i = 0; i < num; i++)s_strTmp += tmp;//替换原字符串str.replace(loc, end - loc + 1, s_strTmp);return;
}