筆試面試題之尾碼數組

來源:互聯網
上載者:User

給定一個字串,求出其最長的重複子串。
思路:使用尾碼數組,對一個字串產生相應的尾碼數組後,然後再排序,排完序依次檢測相鄰的兩個字串的開頭公用部分。
這樣的時間複雜度為:產生尾碼數組 O(N),排序 O(NlogN*N) 最後面的 N 是因為字串比較也是 O(N),依次檢測相鄰的兩個字串
O(N * N),總的時間複雜度是 O(N^2*logN)。

在字串處理當中,尾碼樹和尾碼數組都是非常有力的工具,其中尾碼樹大家瞭解得比較多,關於尾碼數組則很少見於國內的資料。其實尾碼數組是尾碼樹的一個非常精巧的替代品,它比尾碼樹容易編程實現,能夠實現尾碼樹的很多功能而時間複雜度也不太遜色,並且,它比尾碼樹所佔用的空間小很多。

子串:字串 S 的子串 r[i..j] , i ≤ j ,表示 r 串中從 i 到 j 這一段,就是順次排列 r[i],r[i+1],...,r[j]
形成的字串。

尾碼:尾碼是指從某個位置 i 開始到整個串末尾結束的一個特殊子串。字串 r 的從 第 i 個字元開始的尾碼表示為 Suffix(i) ,也就是Suffix(i)=r[i..len(r)]

未完。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.