筆試面試題之後綴陣列

2021-06-17 14:43:06 字數 589 閱讀 2670

給定乙個字串,求出其最長的重複子串。

思路:使用字尾陣列,對乙個字串生成相應的字尾陣列後,然後再排序,排完序依次檢測相鄰的兩個字串的開頭公共部分。

這樣的時間複雜度為:

生成字尾陣列 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)] 。

未完。

筆試面試題

1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...

面試題 筆試

題1 有如下資料庫表tab 請用乙個 delete 語句,刪除 value 重複的行,每個 value 只保留 id 最小的一行。delete from tab where id notin select from select min id from tab groupby value a 好像有...

筆試面試題

1.書架上有編號為1 19的19本書,從中拿5本,問5本編號都不相鄰的拿法有多少種?使用隔板法,拿掉5本後剩下14塊板,即有15個空,使用組合15份插5份 c15 5 3003 2.1億個資料取前1萬大的整數 演算法思路 a.把1億個資料分成10000個陣列,b.求出10000個陣列的最大值,儲存到...