题目链接
题意:
一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小
思路:
最小表示法
不会戳这里
AC代码:
//#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
string s;
int Get_Min(){
int i = 0, j = 1, k = 0;
int len = s.length();
while(i < len && j < len && k < len){
int t = s[(i + k) % len] - s[(j + k) % len];
if(t == 0) ++k;
else if(t < 0){ //s[(i + k)] < s[(j + k)]
j += k + 1;
k = 0;
} else { // s[(i + k)] > s[(j + k)]
i += k + 1;
k = 0;
}
if( i == j ) ++j;
}
return i < j ? i : j;
}
int main(){
int T;
cin >> T;
while(T--) {
cin >> s;
cout << Get_Min() + 1 << endl;
}
return 0;
}