Уникальный набор слов из строки C ++

0

Я пытаюсь написать функцию, которая вводит array_string и находит уникальные слова, а затем копирует их в unique_array. Это немного над моей головой. Я чувствую, что мне нужен совет, куда идти отсюда.

void unique140(string str_array[], int array_size, string unique_array[], int&unique_size)
{
  int i = 0;
  int j = 0;

for(i = 0; i < array_size; i++)
{
  for(j = 0; j < unique_size; j++)
  if (str_array[i] != unique_array[j])
  {unique_array[i];}
  if(str_array[i] == unique_array[j]
  break;
 }
  • 0
    unique функция.
  • 0
    Я забыл сказать, что я не могу использовать эту функцию. Я должен сделать один сам.
Показать ещё 1 комментарий
Теги:
unique

2 ответа

1

Попробуйте что-нибудь вроде:

void unique140(string str_array[], int array_size, 
                 string unique_array[], int&unique_size)
{
    unordered_map<string,int> count;
    for(int i=0; i<array_size; i++) {
        count[str_array[i]]++;
    }
    unique_size = 0;
    for(auto it=count.begin(); it!=count.end(); ++it) {
        if(it->second==1) {
            unique_array[unique_size++] = it->first;
        }
    }
}

используйте std :: map, если у вас нет std :: unordered_map.

0

Вы не в миллионе миль, циклы выглядят хорошо. Теперь вам нужно использовать эти циклы, чтобы принять решение, является ли слово str_array[i] в unique_array или нет? Теперь всего лишь минутная мысль сообщит вам, что str_array[i] присутствует, если любой из тестов равенства str_array[i] == unique_array[j] является истинным. Здесь, как кодировать, что

for(i = 0; i < array_size; i++)
{
    bool in_unique_array = false;
    for(j = 0; j < unique_size; j++)
       if (str_array[i] == unique_array[j])
           in_unique_array = true;
    ...
}

Затем нам нужно добавить str_array[i] в unique_array если он еще не существует. Так вот

for(i = 0; i < array_size; i++)
{
    bool in_unique_array = false;
    for(j = 0; j < unique_size; j++)
       if (str_array[i] == unique_array[j])
           in_unique_array = true;
    if (!in_unique_array)
    {
        ...
    }
}

Наконец, решив добавить строку в unique_array мы должны сделать это

for(i = 0; i < array_size; i++)
{
    bool in_unique_array = false;
    for(j = 0; j < unique_size; j++)
       if (str_array[i] == unique_array[j])
           in_unique_array = true;
    if (!in_unique_array)
    {
        unique_array[unique_size] = str_array[i];
        unique_size++;
    }
}
  • 0
    когда present , вы могли бы break :)
  • 0
    @gongzhitaao Да, я оставлю это в качестве упражнения для ОП
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню