logo

Comparació de dues cadenes en C++

Donades dues cadenes, com comprovar si les dues cadenes són iguals o no.
Exemples:

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>

Aquest problema es pot resoldre mitjançant qualsevol dels dos mètodes següents



    C++ Operadors relacionals

CPP

quina és la mida del meu monitor






// 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;> }>



>

miniaplicació d'applet
>

Sortida

vaja conceptes en java
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>

Complexitat temporal: O(min(n,m)) on n i m són la longitud de les cordes.

Espai auxiliar: O(max(n,m)) on n i m són la longitud de les cordes.

Això es deu al fet que quan la cadena es passa a la funció crea una còpia de si mateixa a la pila.

    std:: Compara ()

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;> }>

>

són exemples model

>

Sortida

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

Complexitat temporal: O(min(n,m)) on n i m són la longitud de les cordes.

Espai auxiliar: O(max(n,m)) on n i m són la longitud de les cordes.

Això es deu al fet que quan la cadena es passa a la funció crea una còpia de si mateixa a la pila.

css centrant una imatge

Diferències entre els operadors relacionals C++ i compare() :-

  1. compare() retorna un int, mentre que els operadors relacionals retornen un valor booleà, és a dir, cert o fals.
  2. Un únic operador relacional és únic per a una determinada operació, mentre que compare() pot realitzar moltes operacions diferents per si sol, en funció del tipus d'arguments passats.
  3. Podem comparar qualsevol subcadena en qualsevol posició d'una cadena donada utilitzant compare(), que en cas contrari requereix el llarg procediment d'extracció paraula per paraula de la cadena per a la comparació mitjançant operadors relacionals.

Exemple: -

    Utilitzant compare()
// 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';>
    Ús de l'operador relacional
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';>

L'exemple anterior mostra clarament com compara () redueix molt el processament addicional, per tant, és recomanable utilitzar-lo mentre es realitza la comparació de subcadenes en alguna posició, en cas contrari, tots dos funcionen gairebé de la mateixa manera.