注意一点:当字符串第一个字符和最后一个字符相等时,应该比较其内侧的字符,先输出内侧字符更小一侧的字符。附C代码:
#include <stdio.h>
int main()
{
int T, I;
scanf("%d",&T);
for(I=0; I<T; I++)
{
int cnt=0, l, i=0, j;
char s[510];
scanf("%d\n%s",&l,s);
printf("case #%d:\n",I);
for(j=l-1; cnt<l;)
{
if(s[i]<s[j]) printf("%c",s[i++]);
else if(s[i]>s[j]) printf("%c",s[j--]);
else
{
int k=1;
for(;s[i+k]==s[i-k];k++);
if(s[i+k]<s[j-k]) printf("%c",s[i++]);
else printf("%c",s[j--]);
}
cnt++;
}
printf("\n");
}
return 0;
}
赞同, 题目只设计了第判断这个同值的一层次判断. 没有下狠心来个n层的判断