- 论坛徽章:
- 0
|
#1. 你要求"连续", 而集合是无序的, 所以现成的Set相关module只能作为你的部分检测.
#2. 按纯算法来做, 就失去了Perl的优势. 写了一个检测, 应该可以..
my @set1 = qw/1 2/;
my @set2 = qw/1 2 3/;
my @set3 = qw/1 1 2 2/;
my @set4 = qw/1 3/;
print isYourSubset(\@set1, \@set1), "\n";
print isYourSubset(\@set1, \@set2), "\n";
print isYourSubset(\@set1, \@set3), "\n";
print isYourSubset(\@set1, \@set4), "\n";
sub isYourSubset {
my ($a_ref, $b_ref) = ($_[0], $_[1]);
my ($a_str, $b_str) = ('', '');
map { $a_str .= "<$_>" } @$a_ref;
map { $b_str .= "<$_>" } @$b_ref;
print "$a_str $b_str\n";
return 'No' if (index($b_str, $a_str) < 0);
map { return 'Yes' if (index($a_str, "<$_>") < 0)} @$b_ref;
return 'No';
}
|
另外, 如果LZ的数组仅包含整数, 那么有不同的办法.
[ 本帖最后由 Lonki 于 2007-10-26 17:07 编辑 ] |
|