一、最小表示法解決的問題:找到乙個字串的迴圈同構串中字典序最小的那個串。
二、字串的迴圈同構:
比如長度為5字串「abcde」,它的5個迴圈同構串有:
abcde,bcdea,cdeab,deabc,eabcd;其中字典序最小的串為「abcde」。
三、求「abcde」的字典序最小的迴圈同構串
1.把「abcde」再接一遍,變成「abcdeabcde」,令s=「abcdeabcde」,預設下標從1開始;
2.設定兩個指標,乙個指向下方第乙個串的第乙個字元(i=1),乙個指向下方第二個串的第二個字元(j=2)。
這個指標是我們要找的字典序最小的串的起點。
abcdeabcde
abcdeabcde
如果從i開始(包括i)往後k個字元和從j開始(包括j)往後k個字元都相等,且s [i+k]>s[j+k],那麼從i到i+k-1之間的任何乙個字元為首字元時,它的字典序一定不是最優的,將i修改為i=i+j+1;
因為每個指標最多跳轉n次,所以時間複雜度為o(n)
四、**
while(i<=6&&j<=6) //字串長度為6 拼接後為12
if(b[i+k]
學習筆記 最小表示法
最小表示法 用於解決字串s的迴圈同構串中字典序最小的那個,稱為s的最小表示。eg.s abcd 則其迴圈同構串為 abcd dabc cdab bcda 最小的為 abcd 演算法思路 因為迴圈同構問題,所以可以先複製乙份s到s後邊,形成ss。之後雙指標i,j向後掃瞄,i,j所指代表以i,j為開始的...
學習筆記 最小表示法
給定乙個長度為n,可旋轉的字串環,求從哪個位置斷開的長度為n的字串字典序最小 大 以最小為例,最大同理 bzoj1398 vijos1382尋找主人 necklace 當求出最小表示法之後,掃一遍即可比較兩個不可翻轉的環是否本質相同,比較本質應該是其常見用途吧 1 include2 include3...
筆記 最小表示法
引言 用於判斷兩個字串不計順序是否相等的問題。引例 a abcd b cdba 分析 若乙個乙個的列舉的話,時間複雜度高達 由這個簡單的題得出來的簡單思想 如果兩列數是相同的,那麼他們排完序過後的數列也一定是相同的 專有名詞 迴圈同構 字串s abcd 那麼它的迴圈同構就有 bcda cdab da...