logo

Primerjava dveh nizov v C++

Glede na dva niza, kako preveriti, ali sta niza enaka ali ne.
Primeri:

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>

To težavo je mogoče rešiti s katero koli od naslednjih dveh metod



    Relacijski operatorji C++

CPP

pandino središče






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



združevanje javanskih nizov
>

>

Izhod

java točka
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>

Časovna zapletenost: O(min(n,m)), kjer sta n in m dolžina nizov.

Pomožni prostor: O(max(n,m)), kjer sta n in m dolžina nizov.

To je zato, ker ko je niz posredovan v funkciji, ustvari kopijo samega sebe v skladu.

    std:: Primerjaj()

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

c program za primerjavo nizov

>

>

Izhod

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

Časovna zapletenost: O(min(n,m)), kjer sta n in m dolžina nizov.

Pomožni prostor: O(max(n,m)), kjer sta n in m dolžina nizov.

To je zato, ker ko je niz posredovan v funkciji, ustvari kopijo samega sebe v skladu.

linux preimenuj imenik

Razlike med relacijskimi operaterji C++ in compare() :-

  1. compare() vrne int, medtem ko relacijski operaterji vrnejo logično vrednost, tj. res ali napačno.
  2. Posamezen relacijski operator je edinstven za določeno operacijo, medtem ko lahko compare() izvede veliko različnih operacij sam, glede na vrsto posredovanih argumentov.
  3. Primerjamo lahko kateri koli podniz na kateremkoli mestu v danem nizu z uporabo compare(), ki sicer zahteva dolg postopek izločanja niza po besedah ​​za primerjavo z uporabo relacijskih operatorjev.

Primer:-

    Uporaba 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';>
    Uporaba relacijskega operatorja
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';>

Zgornji primer jasno kaže, kako primerjaj() zmanjša veliko dodatne obdelave, zato je priporočljivo, da ga uporabite med izvajanjem primerjave podnizov na nekem mestu, sicer oba delujeta skoraj na enak način.