logo

Kahden merkkijonon vertailu C++:ssa

Kun annetaan kaksi merkkijonoa, kuinka tarkistaa, ovatko kaksi merkkijonoa yhtä suuret vai eivät.
Esimerkkejä:

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>

Tämä ongelma voidaan ratkaista jollakin seuraavista kahdesta menetelmästä



    C++ Relaatiooperaattorit

CPP

lisäämällä merkkijonoa javassa






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



kuinka lukea csv-tiedostoa javassa
>

>

Lähtö

char tostring java
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>

Aika monimutkaisuus: O(min(n,m)) missä n ja m ovat merkkijonojen pituus.

Aputila: O(max(n,m)) missä n ja m ovat merkkijonojen pituus.

Tämä johtuu siitä, että kun merkkijono välitetään funktiossa, se luo itsestään kopion pinoon.

    std:: Vertaa()

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

konekirjoitus foreach

>

>

Lähtö

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

Aika monimutkaisuus: O(min(n,m)) missä n ja m ovat merkkijonojen pituus.

Aputila: O(max(n,m)) missä n ja m ovat merkkijonojen pituus.

Tämä johtuu siitä, että kun merkkijono välitetään funktiossa, se luo itsestään kopion pinoon.

math.pow java

Erot C++-relaatiooperaattoreiden välillä ja vertaa() :-

  1. vertaa() palauttaa int-arvon, kun taas relaatiooperaattorit palauttavat loogisen arvon, eli joko tosi tai epätosi.
  2. Yksi relaatiooperaattori on ainutlaatuinen tietylle operaatiolle, kun taas vertaa() voi suorittaa monia erilaisia ​​operaatioita yksinään, perustuen välitettyjen argumenttien tyyppiin.
  3. Voimme verrata mitä tahansa alimerkkijonoa missä tahansa tietyssä merkkijonossa käyttämällä vertailu(), joka muuten vaatii pitkän prosessin, jossa merkkijono poimitaan sana kerrallaan vertailua varten relaatiooperaattoreilla.

Esimerkki: -

    Vertailu()
// 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';>
    Relaatiooperaattorin käyttö
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';>

Yllä oleva esimerkki osoittaa selvästi, miten vertailla() vähentää paljon ylimääräistä käsittelyä, joten on suositeltavaa käyttää sitä suoritettaessa osamerkkijonojen vertailua jossain kohdassa, muuten molemmat toimivat melkein samalla tavalla.