您的位置:首页 > 其它

个人模板 字符串最小表示法

2017-05-09 17:21 197 查看
#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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: