/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
#include <string.h>
#define size 51
char *chuinkuo(char*s){ //像名字一样,找到第一个"]",操作一下去除第一对括号
int i=0;int len=strlen(s);int str=0;
for(i=0;i<len;i++){
if(s[i]==']'){ //找到第一个"]"
break;
}
else{
str++; //用stl 和str,标记[],两个括号的下标
}
}
if(str==len){ //没有括号直接返回
return s;
}else{
char*t=NULL; //把第一对括号拆开,返回这个t
t=malloc(sizeof(char)*size);
int stl=0;
for(i=str-1;i>0;i--){
if(s[i]=='['){ //这里找到了的[的下标
stl=i;
break;
}
}
int num=0; //stl前一个就是复制的倍数了
num=s[i-1]-'0';
printf("num=%d\n",num);
strncpy(t,s,stl-1); //前面的全部复制copy
int k=0;int j=stl-1;
while(num--){ //num遍,k用来复制体循环,j用来t的循环
for(k=0;k<str-stl-1;k++){
t[j++]=s[stl+k+1];
}
}
i=str+1; //s的第一个]后的全部复制到t的后面
while(i<len){
t[j++]=s[i++];
}
return t;
}
}
char* decodeString(char* s ) {
// write code here
int i=0,len=strlen(s);
printf("%d\n",len);
s=chuinkuo(s); //先去除一遍,如果长度没变就,说明没有括号了
while(strlen(s)!=len){ //注意这里都是s,其实不一样不申请了。做一遍上面的功能发现长度没变就表示没有括号了
len=strlen(s);
printf("%d\n",len);
s=chuinkuo(s);
}
return s;
}