给定STL向量,仅输出重复:
INPUT {"A","A","B","B","C","D","E","F"};
OUTPUT {"A","B"}
我真的是个新手,所以不知道从哪里开始。有人能指出我正确的方向吗?
答案 0 :(得分:1)
一种显而易见的方法是遍历输入,并在地图中计算它们。然后遍历地图并输出计数大于1的每个字符串。
map<string, int> counts;
for (auto const &s : input)
++counts[s];
for (auto const &s : counts)
if (s.second > 1)
outputs.push_back(s.first);
另一种可能性(在您需要维护原始顺序时尤其有用)是在遍历输入时将字符串插入到集合(或unordered_set)中。然后,如果失败,则字符串已经在集合中,因此您将其写入输出。
如果(因为我猜测是这种情况)你只希望每个重复的项目在输出中出现一次,你可能想要将其更改为布尔地图。最初插入项目时,布尔值将设置为false。第二次看到该项时,您将检查布尔值。当它为假时,写出该项,并将其设置为true。如果这是真的,那就意味着它已经写好了,所以不要再把它写出来。