跳转至

最小表示法

约 5 个字 24 行代码

int minStr(string s)
{
    int i=0,j=1,n=s.size();
    for(int k=0;i<n && j<n && k<n;)
    {
        if(s[(i+k)%n]<s[(j+k)%n])
        {
            j=j+k+1;
            k=0;
            if(i==j)
                j++;
        }
        else if(s[(i+k)%n]>s[(j+k)%n])
        {
            i=i+k+1;
            k=0;
            if(i==j)
                j++;
        }
        else
            k++;
    }
    return min(i,j);
}