什么是在不使用哈希的情况下在数组中查找重复值的最佳方法,
@A = ("foo","baz","bar","foo","baz","foo");
Run Code Online (Sandbox Code Playgroud)
这是我的数组,如何只提取重复值,如:
foo baz
@arr1 = (
'2017554310',
'2078991086',
'2163824970',
'2405206346',
'2769562630',
'2769562630',
'3137026006',
'3232651356',
'3369962470',
'3865302266',
'4107452620',
'4232926280',
'5205689000',
'5613613000',
'6105668446',
'6187592436',
'6239350730',
'6239350730',
'7024698706',
'7024698706',
'7024698706',
'7024698706',
'7047088496',
'7136929460',
'7149705670',
'7178455806',
'7607491726',
'7757710940',
'8056423386',
'8325522340',
'8325522340',
'8437352856',
'8437352856',
'8437352856',
'9738570770'
);
Run Code Online (Sandbox Code Playgroud)
我不确定为什么你没有哈希限制,或者没有外部模块.如果它是标准的Perl模块之一File::Basename或者是File::Find什么?这些都带有标准的Perl安装.
你可以对阵列进行排序吗?
my @A = qw(foo baz bar foo baz foo);
my @B = sort @A;
Run Code Online (Sandbox Code Playgroud)
现在@B等于qw*bar baz baz foo foo foo).然后,您可以浏览此数组并查看先前的值是否等于最后一个值:
my @B = sort @A;
my $previous = pop @B; #Just to start out:
foreach my $value (@B) {
if ($previous eq $value) { #Assuming strings only cause I can't use Scalar::Utils
print qq("$value" is a duplicate!\n);
}
$previous = $value;
}
Run Code Online (Sandbox Code Playgroud)
这将打印出多个实例"foo" is a duplicate(每个副本一个).如果您不想这样做,您将不得不进行测试,看看您之前是否打印过该声明.
| 归档时间: |
|
| 查看次数: |
4644 次 |
| 最近记录: |