The minimum string (large) notation

Minimum representation

int min_pos(string str)
{
    int len=str.size();
    int i=0,j=1,k=0;
    while(i<len && j<len && k<len)
    {
        int t=str[(i+k)%len]-str[(j+k)%len];
        if(!t) k++;
        else 
        {
            if(t>0) i+=k+1;
            else j+=k+1;
            if(i==j) j++;
            k=0;
        }
    }
    return min(i,j);
}

Maximum Minimum mix

int min_max_pos(int flag)
{
    int i=0,j=1,k=0;int len=strlen(str);//flag==1 代表取小,flag==0 代表取大
    while(i<len && j<len && k<len)
    {
        int t=str[(i+k)%len]-str[(j+k)%len];
        if(!t) k++;
        else 
        {
            if(flag)
            {
                if(t>0) i+=k+1;
                else j+=k+1;
            }else{
                if(t>0) j+=k+1;
                else i+=k+1;
            }

            if(i==j) j++;
            k=0;
        }
        
    }
    return min(i,j);
}
Published 18 original articles · won praise 9 · views 876

Guess you like

Origin blog.csdn.net/weixin_42859385/article/details/100146181