Как получить список предметов с ровно одним дубликатом в Perl? - PullRequest
1 голос
/ 06 марта 2012

У меня есть список строк, и мне нужно удалить все элементы, которые являются уникальными или имеют более одного дубликата. Другими словами, мне нужно только те предметы, , которые в списке ровно в два раза . Как я могу сделать это в Perl ?

1 Ответ

5 голосов
/ 06 марта 2012

Это особый случай классического рецепта удаления дубликатов. Когда ваши элементы являются строками, это очень просто в Perl 5:

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

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

Это размер O (N) по размеру списка, но я не думаю, что вы можете сойтись с такими вещами, не смотря на каждый элемент хотя бы один раз ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...