Замена повторяющихся слов в строке на целые числа - PullRequest
0 голосов
/ 04 июня 2009

У меня проблема с обработкой строк в C ++.

Правило: если одно и то же «слово» повторяется из предложений или абзаца, я хочу, чтобы оно стало целым числом.

Пример:

  • ввод: we prefer questions that can be answered, not just we discussed that.
  • вывод: 1 prefer questions 2 can be answered, not just 1 discussed 2.
1 we
2 that

Ответы [ 3 ]

4 голосов
/ 04 июня 2009

Я бы выбрал такой подход (только алгоритмы, поскольку это домашнее задание).

  1. Создание структуры данных, сопоставляющей слова со счетчиками.
  2. Обрабатывать текст по одному слову за раз.
    • если это новое слово, добавьте его в структуру данных и установите для него значение 1.
    • если он уже существует, просто увеличить счетчик.
  3. Как только все слова обработаны, просмотрите каждое слово в структуре данных, предоставив уникальное целое число тем, у которых число больше единицы.
  4. Создать новую текстовую строку, пустую для начала, затем снова обработать текст пословно.
    • если слово имеет количество единиц, добавьте это слово к новой строке.
    • если число больше единицы, добавьте уникальное целое число.
4 голосов
/ 04 июня 2009

Этот тип проблемы обычно намного легче решить, если вы используете ассоциативный массив для отслеживания слов, которые вы уже видели. Попробуйте использовать STL map для хранения слов, которые вы уже видели. Чтобы правильно настроить логику, потребуется определенная работа, но карта определенно поможет с тем, что вы пытаетесь сделать.

1 голос
/ 04 июня 2009

Синтаксический:

   For each word in the string
          Check whether the word exists in map<WORD,Counter>
          if the WORD is new the insert into the map with counter =0
          otherwise increment the counter associated with word.

Вывод: (создать новое предложение)

For each word in the string
      Lookup into the vector for counter value
      if counter ==0 then insert WORD as it is
      otherwise convert the counter to string and insert 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...