Finden Sie, ob jedes Zeichen in einer Zeichenfolge in einer anderen Zeichenfolge vorhanden ist, schneller als O (n ^ 2)

8

Gegeben 2 Strings:

%Vor%

Ich möchte herausfinden, ob jedes Zeichen in stringB H A T S in stringA

existiert

Bei einem Junior-Ansatz kann der Prozess innerhalb einer verschachtelten for-Schleife ausgeführt werden, deren Berechnungskomplexität O (n ^ 2) ist.

%Vor%

Ich suche nach einer schnelleren Lösung, um dieses Problem zu lösen.

    
Kone Man 05.08.2016, 17:26
quelle

1 Antwort

10

Es gibt einen linearen Zeitalgorithmus.

  1. Konvertiere dein stringA in einen Hash-Satz von Charakteren, die einen O (1) Mitgliedschaftstest haben.
  2. Iterate über jedes Zeichen in stringB .
  3. Wenn eines der Zeichen nicht in Ihrem Hash-Set ist, schlägt der Test fehl.
  4. Wenn kein Fehler vorliegt, ist der Test erfolgreich.
recursive 05.08.2016, 17:30
quelle