Dadas dos cadenas, cómo comprobar si las dos cadenas son iguales o no.
Ejemplos:
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>
Este problema se puede resolver utilizando cualquiera de los dos métodos siguientes.
- Operadores relacionales C++
CPP
métodos de cadena en java
// 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;> }> |
tipos de pruebas
>
>Producción
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>
Complejidad del tiempo: O(min(n,m)) donde n y m son la longitud de las cuerdas.
Espacio Auxiliar: O(max(n,m)) donde n y m son la longitud de las cadenas.
Esto se debe a que cuando se pasa una cadena en la función, crea una copia de sí misma en la pila.
mecanografiado de bucle foreach
- std:: Comparar()
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;> }> |
lista java a matriz
>
>Producción
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>
Complejidad del tiempo: O(min(n,m)) donde n y m son la longitud de las cuerdas.
Espacio Auxiliar: O(max(n,m)) donde n y m son la longitud de las cadenas.
Esto se debe a que cuando se pasa una cadena en la función, crea una copia de sí misma en la pila.
tipos de datos de referencia en java
Diferencias entre operadores relacionales de C++ y comparar() :-
- compare() devuelve un int, mientras que los operadores relacionales devuelven un valor booleano, es decir, verdadero o falso.
- Un único operador relacional es exclusivo para una determinada operación, mientras que compare() puede realizar muchas operaciones diferentes por sí solo, según el tipo de argumentos pasados.
- Podemos comparar cualquier subcadena en cualquier posición en una cadena determinada usando compare(), lo que de otro modo requiere el largo procedimiento de extracción palabra por palabra de la cadena para compararla usando operadores relacionales.
Ejemplo:-
- Usando comparar()
// 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';>
- Usando el operador relacional
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';> El ejemplo anterior muestra claramente cómo comparar() reduce una gran cantidad de procesamiento adicional, por lo tanto, es recomendable usarlo mientras se realiza la comparación de subcadenas en alguna posición; de lo contrario, ambas funcionan casi de la misma manera.