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