logo

Sammenligning av to strenger i C++

Gitt to strenger, hvordan sjekke om de to strengene er like eller ikke.
Eksempler:

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>

Dette problemet kan løses ved å bruke en av de følgende to metodene



    C++ Relasjonelle operatører

CPP






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



>

>

Produksjon

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

Tidskompleksitet: O(min(n,m)) hvor n og m er lengden på strengene.

Hjelpeplass: O(maks(n,m)) hvor n og m er lengden på strengene.

Dette er fordi når strengen sendes i funksjonen, lager den en kopi av seg selv i stabelen.

    std:: Sammenlign()

CPP




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

>

>

Produksjon

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

Tidskompleksitet: O(min(n,m)) hvor n og m er lengden på strengene.

Hjelpeplass: O(maks(n,m)) hvor n og m er lengden på strengene.

Dette er fordi når strengen sendes i funksjonen, lager den en kopi av seg selv i stabelen.

Forskjeller mellom C++ relasjonsoperatorer og compare() :-

  1. compare() returnerer en int, mens relasjonsoperatorer returnerer boolsk verdi, dvs. enten sant eller usant.
  2. En enkelt relasjonsoperator er unik for en bestemt operasjon, mens compare() kan utføre mange forskjellige operasjoner alene, basert på typen argumenter som sendes.
  3. Vi kan sammenligne hvilken som helst delstreng på hvilken som helst posisjon i en gitt streng ved å bruke compare(), som ellers krever den lange prosedyren med ord-for-ord-ekstraksjon av streng for sammenligning ved bruk av relasjonsoperatorer.

Eksempel:-

    Bruke 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';>
    Bruker Relasjonsoperatør
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';>

Eksempelet ovenfor viser tydelig hvordan sammenligne() reduserer mye ekstra prosessering, derfor er det tilrådelig å bruke det mens du utfører substring-sammenligning på en eller annen måte, ellers fungerer begge nesten på samme måte.