Это спор, который у меня возник с одним из моих друзей: какой самый быстрый способ создать метод оценки, который проверяет, содержит ли данная строка один из недопустимых символов
Метод I:простой
char [] invalidChars = "!@#$%^...".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;
}
}
}
Метод II: использование O карты (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;
}
Метод I на самом деле N2, но так же хорош, как N, когда invalidChars меньше в числе.Что следует отдавать предпочтение, когда Случай I: Есть много недопустимых символов, Случай II: только несколько недопустимых символов?
Примечание. Я не ищу никаких встроенных java-решений, а просто алгоритм фильтрации нескольких (не все) нетекстовые символы