Wie funktioniert dieser Code zum Abrufen von LCP von einem Suffix-Array?

Kann jemand erklären, wie dieser Code zum Erstellen des LCP aus einem Suffix-Array funktioniert?suffixArr[] ist ein Array, so dasssuffixArr[i] enthält den Wert des Index in der Zeichenfolge für das Suffix mit Rangi.

 void LCPconstruct()
{
    int i,C[1001],l;
    C[suffixArr[0]] = n;


    for(i=1;i<n;i++)
    C[suffixArr[i]] = suffixArr[i-1];

    l = 0;

   for(i=0;i<n;i++)
   {
    if(C[i]==n)
        LCPadj[i] = 0;
    else
    {
        while(i+l<n && C[i]+l<n && s[i+l] == s[C[i]+l])
            l++;
        LCPadj[i] = l;

        l = max(l-1,0);
    }
  }

  for(i=0;i<n;i++)
     cout<<LCPadj[suffixArr[i]]<<"\n";


}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage