给一串名字,将他们去重之后返回。两个名字重复是说在忽略大小写的情况下是一样的。
样例
给出:
[
"James",
"james",
"Bill Gates",
"bill Gates",
"Hello World",
"HELLO WORLD",
"Helloworld"
]
返回:
[
"james",
"bill gates",
"hello world",
"helloworld"
]
返回名字必须都是小写字母。
解题思路:
对于这种去重问题,使用哈希表即可。先将大写转换为小写,然后插入哈希表,最后将哈希表中的内容取出来放进结果中。
class Solution { public: /** * @param names: a string array * @return: a string array */ vector<string> nameDeduplication(vector<string> &names) { // write your code here unordered_set<string> sstr; for(int i=0;i<names.size();i++) { for(int j=0;j<names[i].size();j++) { names[i][j] = tolower(names[i][j]); } sstr.insert(names[i]); } vector<string> res; for(auto it=sstr.begin();it != sstr.end();it++) res.push_back(*it); return res; } };