#!/usr/bin/perl
use warnings;
use strict;
sub compare;
my @array;
$array[0] = "ABCD ABDC ACBD ABBC";
$array[1] = "ACBD ABCD AAAD ADBC BBAC";
$array[2] = "ABCD CCDB BDCB CABC";
compare(@array);
sub compare(@)
{
my %sorted;
my $i = 0;
foreach my $element (@_)
{
my @strings = split(/\s+/,$element);
foreach my $string (@strings) { push(@{$sorted{$string}}, $i) }
$i++;
}
foreach my $string (keys(%sorted))
{
# print scalar(@{$sorted{$string}}) . "\n";
if ( scalar(@{$sorted{$string}}) == scalar(@_) ) { print "$string present in all elements\n" }
else { print "$string missing in some elements\n" }
}
}
上面的代码打印:
ABBC missing in some elements
ABCD present in all elements
CCDB missing in some elements
ABDC missing in some elements
AAAD missing in some elements
BBAC missing in some elements
BDCB missing in some elements
ACBD missing in some elements
CABC missing in some elements
ADBC missing in some elements
1条答案
按热度按时间jexiocij1#
我经常使用的一个技巧是将其组织成一个散列,并让字符串作为键。在这种情况下,数组的散列,其中每个数组是可以找到字符串的原始元素的列表:
上面的代码打印:
如果你愿意,你可以使用子程序中的另一个打印行来获得更详细的报告。
**免责声明:**这段代码并不是为了优雅或高效而写的,而是为了以一种易于阅读的方式完成工作。嗯,只要数组的散列可以很容易地阅读,就是这样。