又是要求循环字符串中最小字典序的串的位置,和最大字典序的串的位子
int Min_or_Max(bool Min,int len)
{
int i = 0, j = 1, k = 0, sub = 0;
while (i < len&&j < len&&k < len)
{
sub = str[(i + k) % len] - str[(j + k) % len];
if (sub == 0)
k++;
else
{
if ((Min ? sub>0 :sub < 0))
i += k + 1;
else
j += k + 1;
if (i == j)
j++;
k = 0;
}
}
return i < j ? i : j;
}
int Min_or_Max(bool Min,int len)
{
int i = 0, j = 1, k = 0, sub = 0;
while (i < len&&j < len&&k < len)
{
sub = str[(i + k) % len] - str[(j + k) % len];
if (sub == 0)
k++;
else
{
if ((Min ? sub>0 :sub < 0))
i += k + 1;
else
j += k + 1;
if (i == j)
j++;
k = 0;
}
}
return i < j ? i : j;
}