我需要编写一个简单的算法:
以下是一个例子:
char array1[103] = {'V', 'U', 'A', 'A', 'U', 'U', 'A', 'A', 'V', 'U', 'A', 'V', 'V', 'U', 'U'};
char array2[10]; //Empty
//Output should be:
3
V U A
我需要用c ++编写它,但pseuodo代码也很棒。我可以自己编写代码我只需要了解这个算法。
答案 0 :(得分:0)
std::unordered_set
对象。集合是仅包含唯一元素的集合。答案 1 :(得分:0)
以下可能会有所帮助:
#include <cassert>
#include <cstring>
#include <algorithm>
#include <iostream>
int main(int argc, char *argv[])
{
char array1[103] = {'V', 'U', 'A', 'A', 'U', 'U', 'A', 'A', 'V', 'U', 'A', 'V', 'V', 'U', 'U'};
char array2[10]; //Empty
int size = strlen(array1); // get the used size of the array
std::sort(std::begin(array1), array1 + size);
auto it = std::unique(std::begin(array1), array1 + size);
size = it - std::begin(array1);
assert(size < 10);
std::copy(std::begin(array1), it, std::begin(array2));
std::cout << size << std::endl;
for (int i = 0; i != size; ++i) {
std::cout << array2[i] << " ";
}
// Output is:
//3
//A U V
return 0;
}