sub Solution{
$matchflag=0;
$occurence=0;
#OUPTUT [uncomment & modify if required]
my $ind=index($m,$p);
if ($ind!=-1){
$matchflag=1;
}
$occurence= () = $m =~ /$q/g;
print("$matchflagn");
print($occurence);
}
#INPUT [uncomment & modify if required]
$n=<STDIN>;
$m=<STDIN>;
$p=<STDIN>;
$q=<STDIN>;
Solution();
您好,有人可以告诉我此代码有什么问题吗? 它给了我以下输出。
6
naman
nam
n
0
1
显然,0 应该是 1,因为 nam 存在于 naman 字符串中。 1 也应该是 2,因为 n 在字符串中出现两次。
这段代码有什么问题?
当你从<STDIN>
读取时,你需要删除字符串末尾n
换行符,
chomp for
$n=<STDIN>,
$m=<STDIN>,
$p=<STDIN>,
$q=<STDIN>,
;
您可能还需要考虑通过使用my
词法而不是全局变量来更好地确定范围,以及一些使生活更轻松的检查,例如use strict; use warnings;
OP 可能意味着代码如下
use strict;
use warnings;
my $n = input();
my $m = input();
my $p = input();
my $q = input();
Solution();
sub input{
my $input = <STDIN>;
chomp $input;
return $input;
}
sub Solution{
my $matchflag=0;
my $occurence=0;
#OUPTUT [uncomment & modify if required]
my $ind=index($m,$p);
if ($ind!=-1){
$matchflag=1;
}
$occurence= () = $m =~ /$q/g;
print("Match flag: $matchflagn");
print("Ocurance: $occurencen");
}
输出
6
naman
nam
n
Match flag: 1
Ocurance: 2