字符串C ++中唯一的单词集

时间:2013-12-03 00:17:04

标签: c++ unique

我正在尝试编写一个输入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;
 }

2 个答案:

答案 0 :(得分: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 :: unordered_map,请使用std :: map。

答案 1 :(得分: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++;
    }
}