Учитывая некоторые строки, ab, abc, ad, ace, ddd ... из файла, чтобы узнать, есть ли строка строк в строках. Если я хочу использовать хэш, чтобы проверить существование S.Правильный способ анализа этого простого алгоритма
Анализ алгоритмов: поскольку каждая операция «put» принимает O (1) * K время, где K - длина строки, создание отображение принимает O (n * K) время, где n - число строк. И поиск занимает постоянное время, поэтому общее время O (n * k). Правильно ли это? Хотя мы часто говорим, что хеш-таблица позволяет постоянно смотреть вверх, она обычно игнорирует время, затрачиваемое на создание хэша. Отвечая на такой вопрос, могу ли я сказать, что временная сложность O (n * k) или просто O (n)? Большое спасибо. Просто начал изучать алгоритм анализа.
String line = null;
BufferedReader br = new BufferedReader(new File("file.txt"));
HashMap<String, Integer> strs = new HashMap<String,Integer>();
while((line=br.readLine()) != null){
Integer count = strs.get(line);
if(count == null){
strs.put(line, 1);
}
count++;
}
// Suppose the string to be checked is "str";
if(strs.contains(str)){
return true;
}
return false;
Давайте проигнорируем мой код. Файл содержит список строк и проверяет, существует ли строка в строках. С HashMap, какая сложность во времени? Вот что я хочу ответить. Извините за вопрос. – user697911
«K» означает среднюю длину строк. – user697911
Отредактирован, чтобы дать ориентированный на алгоритм ответ, а не синтаксический ориентированный ответ big-o :) – user1445967