logo

Sammenligning af to strenge i C++

Givet to strenge, hvordan man kontrollerer, om de to strenge er ens eller ej.
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 problem kan løses ved hjælp af en af ​​følgende to metoder



    C++ Relationelle 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;> }>



>

>

Produktion

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 længden af ​​strengene.

Hjælpeplads: O(max(n,m)) hvor n og m er længden af ​​strengene.

Dette skyldes, at når streng sendes i funktionen, opretter den en kopi af sig selv i stakken.

    std:: Sammenlign()

CPP




java string replaceall
// 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;> }>

>

>

Produktion

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 længden af ​​strengene.

Hjælpeplads: O(max(n,m)) hvor n og m er længden af ​​strengene.

Dette skyldes, at når streng sendes i funktionen, opretter den en kopi af sig selv i stakken.

Forskelle mellem C++ Relationelle operatorer og compare() :-

  1. compare() returnerer en int, mens relationelle operatorer returnerer boolesk værdi, dvs. enten sand eller falsk.
  2. En enkelt Relationel operator er unik for en bestemt operation, mens compare() kan udføre mange forskellige operationer alene, baseret på typen af ​​argumenter, der sendes.
  3. Vi kan sammenligne enhver understreng på en hvilken som helst position i en given streng ved at bruge compare(), hvilket ellers kræver den lange procedure med ord-for-ord-udtrækning af streng til sammenligning ved brug af relationelle operatorer.

Eksempel:-

    Brug af 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';>
    Brug af Relationel operator
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';>

Ovenstående eksempel viser tydeligt hvordan sammenligne() reducerer masser af ekstra behandling, derfor er det tilrådeligt at bruge det, mens du udfører substring-sammenligning på en eller anden position, ellers fungerer begge næsten på samme måde.