解密字符串
题目
给你一个表达式,表达式中包括数字,字母以及方括号。在方括号前的数字表示方括号内容的重复次数(方括号内的内容可以是字符串或另一个表达式),请将这个表达式展开成一个字符串。
输入描述
Input
输入只有一行
输入为一串字符
字符串长度小于500。
输入字母包括大小写,数字小于10。
输出描述
Output
表达式展开后的字符串
样本输入
Input example
abc3[a]
样本输出
Output example
abcaaa
解答
#include<stdio.h>
#include<string.h>
void PRINTF(char str[500]){
int n,marry=1;
char *head,*rear;
char STR[500],copystr[500];
memset(copystr,0,500);
memset(STR,0,500);
strcpy(copystr,str);
head=strchr(copystr,'[');
if(head==NULL){
printf("%s",copystr);
return;
}
rear=head;
while(marry){
rear++;
if(*rear=='[') marry++;
else if(*rear==']') marry--;
}
n=*(head-1)-48;
*(head-1)='\0';
*rear='\0';
rear++;
strcpy(STR,head+1);
printf("%s",copystr);
for(int i=1;i<=n;i++) PRINTF(STR);
PRINTF(rear);
return;
}
int main(){
char str[500];
scanf("%s",str);
PRINTF(str);
}