Pateikus dvi eilutes, kaip patikrinti, ar dvi eilutės yra lygios, ar ne.
Pavyzdžiai:
Java burbulų rūšiavimas
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>
Šią problemą galima išspręsti naudojant bet kurį iš šių dviejų būdų
- C++ Reliaciniai operatoriai
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;> }> |
>
>Išvestis
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>
Laiko sudėtingumas: O(min(n,m)) čia n ir m yra stygų ilgis.
Pagalbinė erdvė: O(max(n,m)), kur n ir m yra stygų ilgis.
Taip yra todėl, kad kai eilutė perduodama funkcijoje, ji sukuria savo kopiją krūvoje.
- std:: Palyginti ()
CPP
pandas melt
// 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;> }> |
>
>Išvestis
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>
Laiko sudėtingumas: O(min(n,m)) čia n ir m yra stygų ilgis.
Pagalbinė erdvė: O(max(n,m)), kur n ir m yra stygų ilgis.
Taip yra todėl, kad kai eilutė perduodama funkcijoje, ji sukuria savo kopiją krūvoje.
Skirtumai tarp C++ reliacinių operatorių ir palyginimo () :-
- palyginimas() grąžina int, o reliaciniai operatoriai grąžina loginę reikšmę, t. y. true arba false.
- Vienas „Relational“ operatorius yra unikalus tam tikrai operacijai, o palyginimas () gali atlikti daugybę skirtingų operacijų, atsižvelgiant į pateiktų argumentų tipą.
- Mes galime palyginti bet kurią eilutę bet kurioje tam tikros eilutės pozicijoje naudodami palyginimą (), kuriai kitu atveju reikia ilgos eilutės ištraukimo žodžiu po žodžio procedūros, kad būtų galima palyginti naudojant reliacinius operatorius.
Pavyzdys:-
- Naudojant palyginimą ()
// 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';>
- Naudojant reliacinį operatorių
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';> Aukščiau pateiktas pavyzdys aiškiai parodo, kaip palyginti () sumažina daug papildomo apdorojimo, todėl patartina jį naudoti atliekant poeilučių palyginimą tam tikroje pozicijoje, kitaip abu veikia beveik vienodai.