Este es un debate que estaba teniendo con uno de mis amigos: ¿Cuál sería la forma más rápida de hacer un método de validación que verifique si la cadena dada tiene uno de los no permitidos caracteresAlgo más rápido para buscar un conjunto de caracteres en una cadena dada
método I: sencilla
char [] invalidChars = "[email protected]#$%^...".toCharArray();
for (int i = 0; i < myString.length(); i++) {
char ch = myString.charAt(i);
for (int j = 0; j < invalidChars.length; j++) {
if (invalidChars[j] == ch) {
return false;
}
}
}
método II: Explotación de O de Mapa (1)
Map <String,String> map = new HashMap<String, String>();
map.put("!", null);
map.put("@", null);
map.put("#", null);
map.put("$", null);
map.put("^", null);
...
for (int i = 0; i < labels.length(); i++) {
char ch = labels.charAt(i);
if (map.containsKey(ch)) {
return false;
}
return true;
}
El método I es en realidad N2 pero tan bueno como N cuando invalidChars son menos en número. ¿Qué se debe preferir cuando Caso I: hay muchos caracteres no válidos, Caso II: solo unos pocos caracteres no válidos?
Nota: No estoy en busca de alguna solución de Java incorporado, pero, al igual que el algoritmo para filtrar algunos (no todos) los personajes no son de texto
Aunque eso podría ser una solución, no es realmente una respuesta a la pregunta. –
@Roy: ¿Por qué no es una respuesta? Es un "algoritmo" O (1), dadas ciertas restricciones. –
Lo siento, he leído mal, tienes razón, he votado tu comentario. Pensé que solo quería saber cuál de los dos es más rápido. –