Это дискуссия, с которой я столкнулся с одним из моих друзей: что было бы самым быстрым способом сделать валиационный метод, который проверяет, имеет ли данная строка один из недопустимых символыСамый быстрый алгоритм для поиска набора символов в заданной строке
метод I: простой
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;
}
}
}
Способ 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;
}
метод, который я на самом деле N2, но так хорошо, как N, когда invalidChars меньше в номер. Что должно быть предпочтительнее, если Case I: Есть много недопустимых символов, Case II: всего несколько неверных символов?
Примечание: Я не ищу какие-либо встроенную яву решений, но только алгоритм фильтрации несколько (не все) нетекстовых символы
Хотя это может быть решение, на самом деле это не ответ на вопрос. –
@ Roy: Почему это не ответ? Это O (1) «алгоритм», учитывая определенные ограничения. –
Простите, я неправильно понял, вы правы, я подтвердил ваш комментарий. Я думал, он только хотел узнать, какая из двух быстрее. –