注意一点:当字符串第一个字符和最后一个字符相等时,应该比较其内侧的字符,先输出内侧字符更小一侧的字符。附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层的判断