注意点:
- 逐个输入while(cin>>ch)用ctrl+z
- 输入数字直接cin,不要直接字符串输入
- 递归处理想明白
AC代码
using namespace std;
#include <iostream>
#include <cstring>
string unzip()
{
char ch;
string a;
while(cin>>ch)
{
if(ch=='[') //输入[之后输入数字,解压里面的,重复k次
{
int k;
cin>>k; //数字表示次数
string str=unzip(); //递归调用解压函数
for(int ii=0;ii<k;ii++)
{
a=a+str; //重复加k次
}
//!!!!! return a;不能在这里return
}
else if(ch==']') //输入]之后,返回内容
{
return a;
}
else //输入其他的,加上去
{
a=a+ch;
}
}
}
int main ()
{
cout<<unzip(); //调用一下
return 0;
}