字符串最大最小表示法

在百度文庫裏的一個ppt看到的 感覺不錯 截圖下來做記錄吧 原文出自這個:




























本人覺得比較有用的就是這些 裏面還有將kmp的部分因爲已經比較掌握就沒有看了 

具體網址戳點擊打開鏈接

最後附上模板:

最小:

int getmin()
{
    int i=0,j=1,k=0;
    while(i<len&&j<len&&k<len)
    {
        if(s[(i+k)%len]==s[(j+k)%len])
            k++;
        else
        {
            if(s[(i+k)%len]>s[(j+k)%len])
                i+=k+1;
            else
                j+=k+1;
            if(i==j)
                j++;
            k=0;
        }
    }
    return min(i,j);
}
最大;
int getmax()
{
    int i=0,j=1,k=0;
    while(i<len&&j<len&&k<len)
    {
        if(s[(i+k)%len]==s[(j+k)%len])
            k++;
        else
        {
            if(s[(i+k)%len]>s[(j+k)%len])
                j+=k+1;
            else
                i+=k+1;
            if(i==j)
                j++;
            k=0;
        }
    }
    return min(i,j);
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章