最大最小表示法

2022-06-11 16:18:13 字數 675 閱讀 3653

沒看懂。。對。。是的。。這幾天有點迷。。

時間複雜度:o(n)

應用:比較兩個環形串是否是同一字串、判重、判同分異構等

判同分異構:都化為最小或最大 看有幾個不一樣的就好了。。放到set裡。。。

最小表示法是我在看插頭dp的時候看到的乙個名詞,就先來看了一下這個演算法,還是蠻簡單的,有乙個首位相連的字串,我們要尋找乙個位置,從這個位置向後形成乙個新字串,我們需要使這個字串字典序最小。

我們這裡要i = 0,j = 1,k = 0,表示從i開始k長度和從j開始k長度的字串相同(i,j表示當前判斷的位置)

當我們str[i] == str[j]時,根據上面k的定義,我們的需要進行k+1操作

當str[i] > str[j]時,我們發現i位置比j位置上字典序要大,那麼不能使用i作為開頭了,我們要將i向後移動,移動多少呢?有因為i開頭和j開頭的有k個相同的字元,那麼就執行 i = i + k +1

相反str[i] < str[j]時,執行:j = j + k +1 

最終i和j中較小的值就是我們最終開始的位置

相反如果是最大表示法的話,我們就要求解字典序最大的字串,那麼我們只需要在執行第二或第三個操作時選擇較大的那個位置較好了

int

get_min()

}return i >j ?j :i;

}

最大最小表示法

時間複雜度 o n 應用 比較兩個環形串是否是同一字串 判重 判同分異構等 判同分異構 都化為最小或最大 看有幾個不一樣的就好了。放到set裡。最小表示法是我在看插頭dp的時候看到的乙個名詞,就先來看了一下這個演算法,還是蠻簡單的,有乙個首位相連的字串,我們要尋找乙個位置,從這個位置向後形成乙個新字...

最小最大表示法

乙個首位相連的字串,我們要尋找乙個位置,從這個位置向後形成乙個新字串,我們需要使這個字串字典序最小。有乙個字串str,下標為 0 len 我們這裡要i 0,j 1,k 0,表示從i開始k長度和從j開始k長度的字串相同 i,j表示當前判斷的位置 1 當str i k str j k 時 k 2 當st...

最小 最大 表示法

最小表示法是求與某個字串迴圈同構的所有字串中,字典序最小的串是哪個。比如說乙個字串jdrakioi,它長為8,也就是說最多有八種迴圈同構的方法。jdrakioi drakioij rakioijd akioijdr kioijdra ioijdrak oijdraki ijdrakio。這幾個串在原...