Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Comparar Caracteres de cadenas

Estas en el tema de Comparar Caracteres de cadenas en el foro de Java en Foros del Web. Hola amigos de foros del web debo comparar dos cadenas y decir si tienen los mismos caracteres Ejemplo - Cadena1 ="Casa" - Cadena1 ="Saca" hasta ...
  #1 (permalink)  
Antiguo 26/09/2012, 14:09
Avatar de YeisonSoto  
Fecha de Ingreso: enero-2011
Ubicación: Cali, Colombia, Colombia
Mensajes: 116
Antigüedad: 13 años, 3 meses
Puntos: 4
Comparar Caracteres de cadenas

Hola amigos de foros del web debo comparar dos cadenas y decir si tienen los mismos caracteres

Ejemplo - Cadena1 ="Casa"
- Cadena1 ="Saca"

hasta ahora he intentado esto

Código Javascript:
Ver original
  1. /*Recorro cadena1*/
  2.         for (i = 0; i < Cadena1.length(); i++) {
  3.             System.out.println("Cadena 1 :" + i + " " + Cadena1.charAt(i));
  4.             VectorCadena1[i] = Cadena1.charAt(i);
  5.         }
  6.         System.out.println();
  7.  
  8.        
  9.         /*Recorro cadena2*/
  10.         for (j = 0; j < Cadena2.length(); j++) {
  11.             System.out.println("Cadena 2 :" + j + " " + Cadena2.charAt(j));
  12.             VectorCadena2[j] = Cadena2.charAt(j);
  13.         }
  14.  
  15.  
  16.  
  17.         for (i = 0; i < Cadena1.length(); i++) {
  18.             for (j = 0; j < Cadena2.length(); j++) {
  19.  
  20.               /*Como  comparo los dos arreglos?*/
  21.  
  22.             }
  23.  
  24.         }

- No se como comparas los arreglos

Agradezco su ayuda.....
  #2 (permalink)  
Antiguo 26/09/2012, 14:41
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 12 años
Puntos: 19
Respuesta: Comparar Caracteres de cadenas

Eso es hacer demasiados recorridos, yo te recomendaría que intentaras con substring por cada caracter, por ejemplo:

Código Java:
Ver original
  1. public static boolean same(String cadena1, String cadena2) {
  2.         for (int i = 0; i < cadena1.length(); i++) {
  3.             if (!cadena2.contains(cadena1.substring(i, i + 1))) {
  4.                 return false;
  5.             }
  6.         }
  7.  
  8.         for (int i = 0; i < cadena2.length(); i++) {
  9.             if (!cadena1.contains(cadena2.substring(i, i + 1))) {
  10.                 return false;
  11.             }
  12.         }
  13.         return true;
  14.     }

De este modo preguntas si se contienen mutuamente, que es justamente lo que necesitas saber.

Saludos.
  #3 (permalink)  
Antiguo 26/09/2012, 15:17
Avatar de YeisonSoto  
Fecha de Ingreso: enero-2011
Ubicación: Cali, Colombia, Colombia
Mensajes: 116
Antigüedad: 13 años, 3 meses
Puntos: 4
Pregunta Respuesta: Comparar Caracteres de cadenas

Cita:
Iniciado por Lalounam Ver Mensaje
Eso es hacer demasiados recorridos, yo te recomendaría que intentaras con substring por cada caracter, por ejemplo:

Código Java:
Ver original
  1. public static boolean same(String cadena1, String cadena2) {
  2.         for (int i = 0; i < cadena1.length(); i++) {
  3.             if (!cadena2.contains(cadena1.substring(i, i + 1))) {
  4.                 return false;
  5.             }
  6.         }
  7.  
  8.         for (int i = 0; i < cadena2.length(); i++) {
  9.             if (!cadena1.contains(cadena2.substring(i, i + 1))) {
  10.                 return false;
  11.             }
  12.         }
  13.         return true;
  14.     }

De este modo preguntas si se contienen mutuamente, que es justamente lo que necesitas saber.

Saludos.

Gracias amigo por ayudarme, pero no entiendo muy bien el código.
me pregunto si me puedes explicar un poco tu codigo o decirme como comparo mis dos arreglos.



Gracias...
  #4 (permalink)  
Antiguo 26/09/2012, 15:33
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 12 años
Puntos: 19
Respuesta: Comparar Caracteres de cadenas

Claro, te voy a poner tus dos ejemplos:

Código Java:
Ver original
  1. String cadena1 = "casa";
  2. String cadena2 = "saca";

para comparar estas dos cadenas tomamos la primera, la recorremos y vamos tomando cada uno de sus caracteres pero no como caracteres sino como cadena, es decir: "c" "a" "s" "a"
en ese mismo recorrido vamos preguntando si la otra cadena "saca" contiene cada uno de los caracteres: "saca".contains("c"). En el instante en que eso no pase:

Código Java:
Ver original
  1. if (!cadena2.contains(cadena1.substring(i, i + 1)))

significara que las cadenas no son iguales pues hemos encontrado un caracter presente en una pero no en la otra.

Por supuesto tenemos que hacer los mismo al revés, ya que si sólo lo hicieramos con una cadena diría que son iguales cadenas como "casa" y "sacale".

Esto hace una solución con n+m de complejidad donde n y m son las longitudes de tus cadenas respectivamente, es decir es de orden lineal :D

Etiquetas: cadenas, caracteres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:58.