logo

Vergleich zweier Strings in C++

Wie kann man anhand zweier Zeichenfolgen überprüfen, ob die beiden Zeichenfolgen gleich sind oder nicht?
Beispiele:

Input : ABCD, XYZ Output : ABCD is not equal to XYZ XYZ is greater than ABCD Input : Geeks, forGeeks Output : Geeks is not equal to forGeeks forGeeks is greater than Geeks>

Dieses Problem kann mit einer der beiden folgenden Methoden gelöst werden



    C++-Relationaloperatoren

CPP


Konvertieren Sie einen String in int





// CPP code to implement relational> // operators on string objects> #include> using> namespace> std;> void> relationalOperation(string s1, string s2)> {> >if> (s1 != s2)> >{> >cout << s1 <<>' is not equal to '> << s2 << endl;> >if> (s1>s2)> >cout << s1 <<>' is greater than '> << s2 << endl;> >else> >cout << s2 <<>' is greater than '> << s1 << endl;> >}> >else> >cout << s1 <<>' is equal to '> << s2 << endl;> }> // Driver code> int> main()> {> >string s1(>'Geeks'>);> >string s2(>'forGeeks'>);> >relationalOperation(s1, s2);> >string s3(>'Geeks'>);> >string s4(>'Geeks'>);> >relationalOperation(s3, s4);> >return> 0;> }>



>

>

Ausgabe

Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>

Zeitkomplexität: O(min(n,m)) wobei n und m die Länge der Zeichenfolgen sind.

Hilfsraum: O(max(n,m)) wobei n und m die Länge der Zeichenfolgen sind.

Task-Manager für Linux

Dies liegt daran, dass bei der Übergabe einer Zeichenfolge in der Funktion eine Kopie von sich selbst im Stapel erstellt wird.

    std:: Compare()

CPP




// CPP code perform relational> // operation using compare function> #include> using> namespace> std;> void> compareFunction(string s1, string s2)> {> >// comparing both using inbuilt function> >int> x = s1.compare(s2);> >if> (x != 0) {> >cout << s1> ><<>' is not equal to '> ><< s2 << endl;> >if> (x>0)> >cout << s1> ><<>' is greater than '> ><< s2 << endl;> >else> >cout << s2> ><<>' is greater than '> ><< s1 << endl;> >}> >else> >cout << s1 <<>' is equal to '> << s2 << endl;> }> // Driver Code> int> main()> {> >string s1(>'Geeks'>);> >string s2(>'forGeeks'>);> >compareFunction(s1, s2);> >string s3(>'Geeks'>);> >string s4(>'Geeks'>);> >compareFunction(s3, s4);> >return> 0;> }>

Java-String in JSON

>

>

Ausgabe

Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>

Zeitkomplexität: O(min(n,m)) wobei n und m die Länge der Zeichenfolgen sind.

Hilfsraum: O(max(n,m)) wobei n und m die Länge der Zeichenfolgen sind.

Dies liegt daran, dass bei der Übergabe einer Zeichenfolge in der Funktion eine Kopie von sich selbst im Stapel erstellt wird.

mycricketlive

Unterschiede zwischen relationalen C++-Operatoren und vergleichen():-

  1. vergleichen() gibt einen int zurück, während relationale Operatoren einen booleschen Wert zurückgeben, d. h. entweder wahr oder falsch.
  2. Ein einzelner relationaler Operator ist für eine bestimmte Operation eindeutig, während „compare()“ viele verschiedene Operationen allein ausführen kann, basierend auf der Art der übergebenen Argumente.
  3. Wir können jede Teilzeichenfolge an jeder Position in einer bestimmten Zeichenfolge mit vergleichen() vergleichen, was ansonsten die lange Prozedur der Wort-für-Wort-Extraktion der Zeichenfolge zum Vergleich mit relationalen Operatoren erfordert.

Beispiel:-

    Compare() verwenden
// Compare 3 characters from 3rd position // (or index 2) of str1 with 3 characters // from 4th position of str2. if (str1.compare(2, 3, str2, 3, 3) == 0) cout<<'Equal'; else cout<<'Not equal';>
    Verwendung eines relationalen Operators
for (i = 2, j = 3; i <= 5 && j <= 6; i++, j++) { if (s1[i] != s2[j]) break; } if (i == 6 && j == 7) cout << 'Equal'; else cout << 'Not equal';>

Das obige Beispiel zeigt deutlich, wie vergleichen() reduziert viel zusätzlichen Verarbeitungsaufwand, daher ist es ratsam, es zu verwenden, während an einer bestimmten Position ein Teilstring-Vergleich durchgeführt wird, da sonst beide fast auf die gleiche Weise funktionieren.