Algoritmul Kasai este destul de usor si lucreaz n O ( n) .
S ne uitm la cele dou sufixe continue n matrice de sufixe .
S pp ca indexurile lor n sufix ar fi i1 si i1 + 1. Dac LCP lor > 0 , atunci dac am sterge prima poz de la amndoi. Putem vedea cu usurint c noile siruri de caractere va avea aceeasi ordine relativ . De asemenea, se poate observa c LCP de noile siruri de caractere va fi exact LCP - 1 . S ne uitam acum la sirul care avem sufixul i prin eliminarea primul su caracter . Evident, aceasta este o parte al sirului sufix de asemenea . Indicele su fie i2 . S ne uitm la LCP de sufixe i2 si i2 + 1. Se poate vedea c LCP va fi LCP cel putin deja mentionat - 1. Acest lucru este asociat cu anumite proprietti ale LCP matrice , n special , c LCP ( i, j) = min ( lcpi , lcpi + 1 , ... , lcpj - 1 ) . si, n cele din urm s facem algoritmul bazat pe cele de mai sus . Vom avea nevoie de un vector suplimentar rank [ n ] , ce va contine indicele n vector de sufixe a sufixului de pornire poz i . n primul rnd ar trebui s calculeze LCP a sufixului cu rank [ 0 ] . Atunci s repeta prin toate sufixele n ordine n care le ndeplinesc n sir si se calculeaz LCP [ rank [ i] ] n mod naiv , dar pornind de la LCP[ rang [ i - 1 ] ] - 1. Usor vedea c acum avem O ( n) algoritmul pentru c pe fiecare pas LCP nostru descreste nu mai mult de 1 ( cu exceptia cazului cnd rank [ i ] = n - 1 ) .