和POJ1509没什么区别,只是输入形式上有些许改变,而且这里要求输出的位置是字符串的
下标,而不用再加1。
/*Accepted 1729 C++ 10ms 276kb Yu*/ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; const int MAXN = 100100; char s[MAXN]; int n, T; int Minpre() { int i = 0, j = 1, k = 0, x, y; while(i < n && j < n && k < n) { x = (i + k) % n; y = (j + k) % n; if(s[x] < s[y]) j += k + 1, k = 0; else if(s[x] > s[y]) i += k + 1, k = 0; else ++ k; if(i == j) j ++; } return min(i, j); } int main() { scanf("%d", &T); while(T --) { scanf("%d%s", &n, s); printf("%d\n", Minpre()); } return 0; }