Chinaunix

标题: 单个单个的比较? [打印本页]

作者: leigh111    时间: 2010-06-03 15:44
标题: 单个单个的比较?
大家好:
比如我有一个文件ABCDEF,
另一个文件有BBDEEF,长度都是一样的。我想让第一个文件的第一个字母与第二个文件的第一个字母比较看是否相等,相等的$common++;  然后让第一个文件的第二个字母与第二个文件的第二个字母比较看是否相等,不相等的话就不管它了,往后的都以此类推。

我老往循环上考虑,但我觉得不能用循环语句。  能给个思路吗?谢谢
作者: x9x9    时间: 2010-06-03 15:58
肯定得用循环吧~
作者: leigh111    时间: 2010-06-03 16:04
能给个思路吗?
作者: x9x9    时间: 2010-06-03 16:25
本帖最后由 x9x9 于 2010-06-03 16:27 编辑

看下可以吗,我没试结果;

my $str1='ABCDEF';
my $str2='BBDEEF';

my @arr1=split //,$str1;
my @arr2=split //,$str2;

my $num=$#arr1;
my $common=0;

for (my $i=0;$i<=$mum;$i++){
$common++ if ($arr1[$i]  eq $arr2[$i] );
}
作者: leigh111    时间: 2010-06-03 16:32
本帖最后由 leigh111 于 2010-06-03 16:42 编辑

自己想了个思路,经过测试OK。
foreach (@file1) {
   if ($_ eq shift(@file2)) {  ########就是利用shift 的返回值
     $common++;

   }
     print "$common\n";
}
作者: leigh111    时间: 2010-06-03 16:41
回复 4# x9x9


    您写的和我开始考虑的思路差不多。但我没有写出来。看了你代码,很简洁,在这里学习了。谢谢
作者: x9x9    时间: 2010-06-03 16:43
自己想了个思路,经过测试OK。
foreach (@file1) {
   if ($_ ne shift(@file2)) {  ########就是利用shi ...
leigh111 发表于 2010-06-03 16:32



也不错, foreach也是循环吧{:3_190:}

测试ok?你到底是相等的时候加一还是不相等时加啊?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2