給定兩序列 A=[01111000110]、B=[10010100110],需找出 A 中「最長前綴」且該前綴也出現於 B 中的所有子串(例:011、110、00110)。
$、#)合併為 S = A + '$' + B + '#'。SA 陣列。O(n²m) 亦可接受。| 方法 | 時間複雜度 | 空間複雜度 |
|---|---|---|
| 後綴陣列 (SA-IS/DC3) | O(N) | O(N) |
| 暴力比對 | O(N²M) | O(1) |
| 動態規劃 (單一最長) | O(NM) | O(NM) |
「多個最長公共子串」問題本質屬於字串學經典議題,後綴陣列是理論最優解;MATLAB 環境下建議優先套用現成工具箱,或將核心演算法移植至 C/C++ MEX 以兼顧效能與開發效率。