题目链接
附代码:
#include<stdio.h>
#define MAX 101
#include<string.h>
int fun(char s[], int i, int ch) /*该函数的功能是找到字典序比较小的位置*/
{
int j;
int n = strlen(s);
for(j = 0; j < n; j++)
{
if(s[(i+j)%n] < s[(ch+j)%n]) /*取余n的目的是避免因i过大而导致越界*/
return 1; /*取余n仍能保证i+j是从i开始数,后面的数*/
else if(s[(i+j)%n] > s[(ch+j)%n])
return 0;
}
}
int main()
{
char s[MAX];
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int n = strlen(s);
int i, ch = 0;
for(i = 1; i < n; i++)
{
if(fun(s,i,ch))
ch = i;
}
for(i = 0; i < n; i++)
printf("%c",s[(i+ch)%n]);
printf("\n");
}
return 0;
}