#include<bits/stdc++.h>
using namespace std;
int getminsub(char *a)
{
int i = 0,j = 1,len = strlen(a),k = 0;
while(i < len && j < len && k < len)
{
if(k == len) break;
if(i == j) j++;
int ni = i + k, nj = j + k;
if(ni >= len) ni -= len;
if(nj >= len) nj -= len;
if(a[ni] > a[nj])
{
i += k + 1;
k = 0;
}
else if(a[ni] < a[nj])
{
j += k + 1;
k = 0;
}
else k++;
}
return i;
}
int main()
{
char a[1001];
while(~scanf("%s", a))
{
printf("%d\n", getminsub(a));
}
}
个人模板 字符串最小表示法
最新推荐文章于 2019-09-21 03:12:24 发布