Perl - 确定一个数组是否是另一个数组的子集

标签 perl

这个问题在这里已经有了答案:





Difference of Two Arrays Using Perl

(10 个回答)


8年前关闭。




我有以下代码。可以isSubset如果没有附加的 CPAN 模块,编写起来会更简单吗?

my @possibleNames = ("adam", "chelsea");
my @actualNames = ("adam", "chucky", "chelsea");

sub isSubset {
    my ($littleSet, $bigSet) = @_;
    foreach (@{$littleSet}) {
        return 0 unless ($_ ~~ @{$bigSet});
    }
    return 1;
}

printf("%s\n", (isSubset(\@possibleNames, \@actualNames) ? "yes" : "no"));

最佳答案

一种相当有效的方法是:

sub isSubset {
    my ($littleSet, $bigSet) = @_;
    my %hash;
    undef @hash{@$littleSet};  # add a hash key for each element of @$littleSet
    delete @hash{@$bigSet};    # remove all keys for elements of @$bigSet
    return !%hash;             # return false if any keys are left in the hash
}

关于Perl - 确定一个数组是否是另一个数组的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947435/

相关文章:

javascript - 在 JavaScript 中访问 Perl 数组

Perl REST 客户端,身份验证问题

regex - 多行正则表达式搜索

perl - 如何在LWP中启用IPv6支持?

perl - 在 perl 中用散列编写交换键和值的最紧凑方法

perl - 我如何在 perl 中找到两个父目录?

perl - Inline::java STUDY 配置

perl - 删除空格,但保留制表符

python - 将子进程通过管道传递到 Linux 中的文件

perl - 如何在 Perl 中从两个组件创建绝对 URL?