如何在Perl中获得只有一个副本的项目列表?

时间:2012-03-06 15:30:33

标签: perl

我有一个字符串列表,我需要删除所有唯一或具有多个副本的项目。换句话说,我需要只有那些项目,列表中的两次。我怎么能在 Perl

中完成

1 个答案:

答案 0 :(得分:5)

这是经典删除重复配方的特例。当你的项目是字符串时,这在Perl 5中非常简单:

my %seen;
for my $item (@list) {
    $seen{$item}++;
}

my @twice = grep { $seen{$_} == 2 } keys(%seen);

这是列表大小的O(N),但是我认为你不至少在不查看每一个元素的情况下就可以逃脱这种事情......