代码丑陋,见谅。
我的思路是:
我认为把这个些需要重复的数的全部相乘所得的结果,就是这后面字符串的出现的总次数,我也推了一下,是没有问题的。
#include<bits/stdc++.h>
using namespace std;
string s,x;
int main()
{
cin>>s;
int len=s.length(),i;
for(i=0;i<len;i++)
{
if(s[i]=='[') break;
printf("%c",s[i]);
}
int t,a=0,sum=1,k=0,p=0;
for(int j=len-1;j>=i;j--)
{
if(s[j]>='A'&&s[j]<='Z'&&s[j-1]>='0'&&s[j-1]<='9') t=j;
if(s[j]=='['&&p)
{
if(a!=0) sum*=a;
k=0;a=0;
}
if(s[j]==']') p=1;
if(s[j]>='0'&&s[j]<='9'&&p)
{
a+=pow(10,k)*(s[j]-'0');
k++;
}
}
for(i=t;i<len;i++)
{
if(s[i]==']') break;
x+=s[i];
}
for(int j=0;j<sum;j++)
cout<<x;
for(;i<len;i++)
{
if(s[i]!=']')
printf("%c",s[i]);
}
printf("\n");
return 0;
}