logo

Porovnanie dvoch reťazcov v C++

Vzhľadom na dva reťazce, ako skontrolovať, či sú tieto dva reťazce rovnaké alebo nie.
Príklady:

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>

Tento problém možno vyriešiť pomocou ktorejkoľvek z nasledujúcich dvoch metód



    C++ Relačné operátory

CPP


a b c čísla





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



>

>

dlho do int java
Výkon

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

Časová zložitosť: O(min(n,m)), kde n a m sú dĺžky reťazcov.

Pomocný priestor: O(max(n,m)), kde n a m sú dĺžky reťazcov.

Je to preto, že keď je vo funkcii odovzdaný reťazec, vytvorí svoju kópiu v zásobníku.

    std:: Porovnať()

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

>

>

Výkon

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

Časová zložitosť: O(min(n,m)), kde n a m sú dĺžky reťazcov.

zoznam metód java

Pomocný priestor: O(max(n,m)), kde n a m sú dĺžky reťazcov.

Je to preto, že keď je vo funkcii odovzdaný reťazec, vytvorí svoju kópiu v zásobníku.

Rozdiely medzi relačnými operátormi C++ a Compare() :-

  1. Compare() vracia int, zatiaľ čo relačné operátory vracajú boolovskú hodnotu, t. j. buď true alebo false.
  2. Jediný relačný operátor je jedinečný pre určitú operáciu, zatiaľ čo porovnávanie () môže samostatne vykonávať množstvo rôznych operácií na základe typu odovzdaných argumentov.
  3. Môžeme porovnať ľubovoľný podreťazec na ľubovoľnej pozícii v danom reťazci pomocou funkcie Compare(), ktorá inak vyžaduje dlhú procedúru extrakcie reťazca slovo po slove na porovnanie pomocou relačných operátorov.

Príklad:-

    Použitie funkcie porovnanie ()
// 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';>
    Použitie relačného operátora
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';>

Vyššie uvedený príklad jasne ukazuje ako porovnať () znižuje množstvo spracovania navyše, preto je vhodné ho použiť pri porovnávaní podreťazcov na určitej pozícii, inak obe fungujú takmer rovnako.