当需要从一个数据集合中去除重复元素时,set是一个很好的选择。由于其不允许存储重复的元素,因此可以很容易地实现去重功能。这在处理原始数据或进行数据分析时特别有用。
题目:
给定一个字符串数组 words,请返回一个由 words 中所有不重复单词组成的列表,并按字母顺序排序。
示例:
输入:words = [“apple”, “banana”, “apple”, “orange”, “banana”, “kiwi”]
输出:[“apple”, “banana”, “kiwi”, “orange”]
解释:去重后并按字母顺序排序得到的单词列表是 [“apple”, “banana”, “kiwi”, “orange”]。
解题思路:
1创建一个空的 set 对象,用于存储不重复的单词。
2遍历字符串数组 words,将每个单词插入到 set 中。由于 set 会自动去重,并对单词排序。
3将 set 中的单词转换为一个 vector 对象。
4返回排序后的 vector 对象作为最终结果。
#include <iostream>
#include <vector>
#include <set>
#include <string>
using namespace std;
void UniqueWords(vector<string>& v) {
set<string> s(v.begin(), v.end()); // 利用set去重并自动排序
v = vector<string>{ s.begin(), s.end() }; // 将set中的单词复制到v中
}
int main() {
vector<string> v = { "apple", "banana", "apple", "orange", "banana", "kiwi" };
UniqueWords(v);
for (const auto & x : v) { //显示结果
cout << x << " ";
}
cout << endl;
return 0;
}