@a =(1,2,3,4,5,6,7);@b =(1,3,5);用perl 求 @a 去掉@b中元素中的数组。
2 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 两种方法, 1:要是ab按照顺序排的话 my ($i, $j) = (0, 0); AA: while ($i <= $#a) { while ($b[$j] < $a[$i]) { $j++; last AA if ($j > $#b); } if ($b[$j] == $a[$i]){ print "delete $a[$i]\n"; splice(@a, $i, 1); } else { $i++; } } print "@a"; 2:要是不按照顺序可以用hash for (@b){$b{$_} = 1;} $i = 0; while ($i <= $#a) { if ($b{$a[$i]}){ print "delete $a[$i]\n"; splice(@a, $i, 1); } else { $i++; } } print "@a"; |
元芳怎么了
TA贡献1798条经验 获得超7个赞
1 2 3 4 5 6 7 8 9 10 11 12 13 | use strict; my %hash; my @a =(1,2,3,4,5,6,7); my @b =(1,3,5); foreach my $ip (@b) { $hash{$ip} = 1 } for(my $i = 0; $i < @a; $i++) { delete $a[$i] if($hash{$a[$i]} == 1) ; } print "@a\n"; |
- 2 回答
- 0 关注
- 741 浏览
添加回答
举报
0/150
提交
取消