这道题得到两个经验教训:第一 在Leetcode中,调试输出不能再控制台输出太多,否则会报
Output Limit Exceeded。第二个:返回值如果是指针数组那么久不要用局部指针数组作为返回值,不然会报错。
char* convert(char* s, int n) {
int len=strlen(s);
char temp[len];
int i;
int in=0;
printf("s=%s\n",s);
if(len<=n) {
printf("len=%d\n",len);
printf("len<=n\n");
return s;
}
if(n==1) {
printf("n==1\n");
return s;
}
for(int j=0;j<=n-1;j++){
int t=0;
int flag=0;
if(j==0||j==n-1) flag=1;
//printf("j=%d\n",j);
while(1){
if(!flag){
//printf("!flag\n");
int d=(n-1)+2*t*(n-1);
int y=d-(n-1);
if(y+j>=len) break;
temp[in++]=s[y+j];
//printf("%c_!flag.....->",s[y+j]);
if((d-j+n-1)>=len) break;
temp[in++]=s[d-j+n-1];
//printf("%c_!flag->",s[d-j+n-1]);
t++;
}
else{
//printf("t=%d\n",t);
//printf("flag\n");
if((2*t*(n-1)+j)>=len) break;
temp[in++]=s[2*t*(n-1)+j];
//printf("s[i]=%c\n",s[2*t*(n-1)+j]);
//printf("temp[i]=%c\n",temp[in-1]);
//printf("%c->",s[2*t*(n-1)+j]);
t++;
}
}
}
temp[in]='\0';
//printf("\n");
strcpy(s,temp);
return s;
}