Programming
T03-003-01 Funciones con tipos estructurados
Enunciado
Detectar cadenas iguales con funciones
Queremos hacer un programa Java que compare cadenas y detecte si dos cadenas son iguales.
Como sabemos, para comparar dos cadenas, que son objetos, no podemos usar el operador de igualdad (==), pues dicho operador compara si ambos objetos son el mismo (misma posición de memoria), y no si ambos objetos o cadenas contienen el mismo texto.
Tendrás que usar métodos de la clase String para manejar cadenas. Es muy posible que tengas que usar los siguientes métodos:
length()charAt(n)Además, para leer los datos desde la entrada, es muy posible que tengas que usar los siguientes métodos de la clase Scanner:
nextInt()nextLine()ENTRADA
La entrada comienza con un número indicando cuántos casos de prueba habrá que procesar. Cada uno de los casos estará formado por dos cadenas, cada una en una línea.
SALIDA
Por cada caso de prueba, el programa escribirá si las dos cadenas comparadas son iguales.
RESTRICCIONES
Deberá resolverse el problema diseñando una función que reciba dos cadenas de texto y devuelva un boolean en el que se indique si son iguales o no.
El programa principal, para cada uno de los casos, leerá los datos de entrada y usará la función para resolver el problema, imprimiendo posteriormente el resultado correspondiente.
Ya sabes que en Java, para resolver este problema que es comparar cadenas, existe el método equals. Evidentemente, se trata de que implementes tú el algoritmo de comparación, por lo que NO se puede usar ni el método "equals" ni el método "compareTo", ni ninguno similar.
Solución
import java.util.Scanner;
public class FCadenasIguales {
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
String cad1, cad2;
int numCasos = 0;
numCasos = sc.nextInt();
sc.nextLine();
for (int i = 1; i <= numCasos; i++) {
cad1 = sc.nextLine();
cad2 = sc.nextLine();
if (sonIguales(cad1, cad2)) {
System.out.println("IGUALES");
} else {
System.out.println("DISTINTAS");
}
}
}
public static boolean sonIguales(String cadena1, String cadena2) {
boolean iguales = true;
int contador = 0;
if (cadena1.length() == cadena2.length()) {
while ((contador < cadena1.length()) && iguales) {
if (cadena1.charAt(contador) != cadena2.charAt(contador)) {
iguales = false;
}
contador++;
}
} else {
iguales = false;
}
return iguales;
}
}
Input
5 Estas 2 cadenas son iguales Estas 2 cadenas son iguales Estas 2 no lo son Estas 2 no lo soN Estas tampoco porque no tienen el mismo tamanyo porque esta es mas corta Volvemos a hacer un caso que sea igual Volvemos a hacer un caso que sea igual Esta es en minuscula ESTA ES EN MINUSCULA
5 Estas 2 cadenas son iguales Estas 2 cadenas son iguales Estas 2 no lo son Estas 2 no lo soN Volvemos a hacer un caso que sea igual Volvemos a hacer un caso que sea igual Estas tampoco porque no tienen el mismo tamanyo porque esta es mas corta Esta es en minuscula ESTA ES EN MINUSCULA
Output
IGUALES DISTINTAS DISTINTAS IGUALES DISTINTAS
IGUALES DISTINTAS IGUALES DISTINTAS DISTINTAS

