Para encontrar las palabras que faltan en la cadena

Fulkit:

Estoy tratando de resolver un problema de encontrar palabras que faltan en una cadena.

Por ejemplo:
Entrada
String 1 = "I love programming, pizza, coke and chips";
String 2 = "I programming, chips";
Salida Obligatorio
Missing words = "love pizza coke";

Nota : el orden de salida tiene que ser mismo (aquí es donde estoy arruinando)

lo que tengo hasta ahora, pero estoy consiguiendo resultados erróneos.

public static List<String> findWord(String s, String t) {
    HashSet<String> missingWords = new HashSet<>();
    String[] words = s.split(" ");
    for(int i=0; i < words.length; i++) {
        if (!t.contains(words[i])) {
            missingWords.add(words[i]);
        }
    }
    List<String> ans = new ArrayList<String>();
    for (String str: missingWords) {
        ans.add(str);
    }

    return ans;
}
Tim Biegeleisen:

Me gustaría acercarse a esta división por dos cadenas de entrada, despojarse de puntuacion, y luego caminando por cada matriz de palabras, en el orden original. Cuando se enfrentan a un partido, ambas listas antelación. Cuando no hay ninguna coincidencia, los avances lista original, pero la segunda lista no es así, y también grabar la palabra original como no haber encontrado una coincidencia.

El punto clave aquí es que utilizamos una ArrayList, que mantiene el orden de inserción, al atravesar.

String input = "I love programming, pizza, coke and chips";
String other = "I programming, chips";
String[] parts = input.replaceAll("[,.;-]", "").split("\\s");
String[] otherparts = other.replaceAll("[,.;-]", "").split("\\s");
List<String> missing = new ArrayList<>();
int pnt = 0;
for (int i=0; i < parts.length; ++i) {
    if (parts[i].equals(otherparts[pnt])) {
        ++pnt;
    }
    else {
        missing.add(parts[i]);
    }
}

System.out.println(Arrays.toString(parts));
System.out.println(Arrays.toString(missing.toArray()));

[I, love, programming, pizza, coke, and, chips]
[love, pizza, coke, and]

Manifestación

agregado de demostración sólo para fines informativos. No confiar en ella para su uso en producción.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=221539&siteId=1
Recomendado
Clasificación