2014-10-30 4 views
0

Итак, если у меня есть большой текстовый файл с повторяющимися строками, как я могу определить линию, которая повторяется чаще всего?Как подсчитать повторяющиеся строки в txt-файле

Example 
    The dog is brown 
    The cat is orange 
    The dog is brown 

Это должно вернуть 2 для The Dog is brown

+0

Есть ли причина для этого быть в C++? Это тривиально реализовать как скрипт оболочки. – user657267

+0

Да, это должно быть C++. Это упражнение – bhzag

+0

Если бы это был список чисел, как бы вы решили проблему? Если вам нужно было сделать это вручную, а не с компьютером, как бы вы это сделали? –

ответ

2

Поскольку это, как представляется, обучение упражнения, вот это подход, который вы можете взять с собой:

  • Сделать ассоциативный контейнер, скажем, map<string,int> или unordered_map<string,int> для ведения счетов
  • Прочитайте файл по строке. Для каждой строки, которую вы получаете, увеличивайте количество в своем ассоциативном контейнере
  • После того, как вы закончите читать файл, пройдите по контейнеру, найдите самый высокий счет и сохраните связанный с ним ключ
  • Когда вы закончите с циклом, ключ которые вы нашли, и связанный с ним подсчет дают ответ на вашу проблему.

Один из способов понять этот подход - рассмотреть ту же проблему, но с заменой строк на цифры. Теперь все, что вам нужно сделать, это написать цикл, который выполняет count[number]++ для каждого number в списке. Описанный выше подход по сути является одним и тем же, но вместо номера для вашего индекса используется строка.

Смежные вопросы