[ Foro de Java ]

Problema con ristras

21-Oct-2015 15:39
Invitado (Casim)
2 Respuestas

Hola, tengo un enunciado que pide que busque en un string los caracteres contenidos en otro, algo como esto:
String1: ?alsikjuyZB8we4 aBBe8XAZ piarBq8 Bq84Z ?
String2: ?XYZAB?
Encontrados:  ?ZB?, ?BB?, ?XAZ?, "B", "B", ?Z?

No entiendo como podría realizarlo pues lo que me pide es que cree un nuevo String separando por guiones los resultados, es decir:
String resultado: "alsikjuy-ZB-8we4 a-BB-e8-XAZ- piar-B-q8 -B-q84-Z-"


25-Oct-2015 02:21
Nacho Cabanes (+84)

La estructura básica del algoritmo, para ver qué letras coinciden, podría ser algo como:

Para cada letra de String1
   Para cada letra de String2
       si letra1 = letra2 entonces pertenece = true

Con eso podrías mostrar la lista de letras de String1 que aparecen en String2.

Para separarlas con guiones como te piden, tendrás que afinar un poco el algoritmo: si la letra actual pertenece y la anterior no, o bien si la actual no pertenece y la anterior sí, deberás escribir un guión antes de escribir la letra.


02-Dec-2015 10:22
Invitado (Casim)

Tengo algo como esto, pero sigo sin consieguir que funcione...


public class StringUtils{
    public static String tagger(String s1, String s2){
        int count=0;
        boolean ant=false;
        String result="";
        // loop through input and pattern
        for (int i=0;i<s1.length();i++){
            for(int j=0;j<s2.length();j++){
                if(s1.charAt(i)==s2.charAt(j)){ //find and collect matches, start target
                    count=0;
                    if(ant=false){
                        result+="[target]"+s1.charAt(i);
                    }else{
                        result+=s1.charAt(i);
                    }
                    ant=true;
                }else{
                    count++;
                    if(count==s2.length()){  //find and collect no-matches, end target
                    	count=0;// count until get s2 length
                    	if(ant=true){
                        	result+="[endtarget]";
                        }else{
                        	result+=s1.charAt(i);
                        }
                        ant=false;
                    }
                }
            }
        }
        return result;
    }
}


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)