Java - Eliminar los caracteres en dos cadenas si el caracter coincide con la cadena

 
Vista:
sin imagen de perfil

Eliminar los caracteres en dos cadenas si el caracter coincide con la cadena

Publicado por Héctor Manuel (1 intervención) el 28/03/2018 20:42:11
Hola, tengo un problema con Java:

tengo estos dos strings

String string1 = "aabcdef";
String string2 = "abcghi";

Y necesito obtener esto: adefghi

O sea, eliminar los caracteres que esten repetidos en ambos string, mi problema es que esto me imprime: defghi, que es un resultado erroneo, alguien puede ayudarme?

1
2
3
4
5
6
7
8
9
public static String regenerate(String a, String b)
{
      String common = null;
 
      common = a.replaceAll("[" + b + "]", "");
      common += b.replaceAll("[" + a + "]", "");
 
      return common;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Eliminar los caracteres en dos cadenas si el caracter coincide con la cadena

Publicado por ctmy (47 intervenciones) el 30/03/2018 07:01:37
Esta es una manera de hacerlo. Solo funciona para letras minusculas pero es possible modificarlo para que funcione con mayusculas, tarea.
Que el codigo los acompañe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Repetidos{
 
  public static void main(String args[]){
    String string1 = "aabcdef";
    String string2 = "abcghi";
 
    StringBuilder result = new StringBuilder();
 
    /* array para contar la cantidad de veces que la letra aparece */
    int[] letters = new int[26];
 
    /* contando... */
    for(int i = 0; i < string1.length(); ++i){
      letters[string1.charAt(i)-97]++;
    }
 
    for(int i = 0; i < string2.length(); ++i){
      letters[string2.charAt(i)-97]++;
    }
 
    /* Convertir a letras basado en el index*/
    for(int i = 0; i < letters.length; ++i){
      /* Verificar si el conteo es impar*/
      if(letters[i]%2 == 1)
        result.append((char)(i+97));
    }
 
    System.out.println(result);
  }
}

http://ctmy-dev.appspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Eliminar los caracteres en dos cadenas si el caracter coincide con la cadena

Publicado por ctmy (47 intervenciones) el 31/03/2018 12:33:24
El ejemplo anterior talvez no devuelva los resultados correctos en esta situacion:
String string1 = "aaabcdef";
String string2 = "abcghi";
El resultado no tendra ninguna 'a'.

El problema por otro lado necesita ser definido mas claramente. El siguiente ejemplo elimina todos los chars que tienen pares.

String string1 = "aabcdef";
String string2 = "abcghi";
resultado: adefghi

String string1 = "aaabcdef";
String string2 = "abcghi";
resultado: aadefghi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void main(String []args){
 
    StringBuilder result = new StringBuilder();
    String string1 = "aaabcdef";
    String string2 = "abcghi";
 
    int[] letters = new int[26];
 
    for(int i = 0; i < string1.length(); ++i){
        letters[string1.charAt(i)-97]++;
    }
 
    for(int i = 0; i < string2.length(); ++i){
        letters[string2.charAt(i)-97]--;
    }
 
    for(int i = 0; i < letters.length; ++i){
        if(letters[i] != 0){
            for(int j = 0; j < Math.abs(letters[i]); ++j){
                result.append((char)(i+97));
            }
        }
    }
 
    System.out.println(result);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar