把相同的词汇、句子或字符串,在文中调换位置或颠倒过来,产生首尾回环的结构,叫做回文例如:知难而退,退难而知,我来为大家科普一下关于perl如何传递参数?以下内容希望对你有帮助!

perl如何传递参数(Perl实例构造回文)

perl如何传递参数

把相同的词汇、句子或字符串,在文中调换位置或颠倒过来,产生首尾回环的结构,叫做回文。例如:知难而退,退难而知

为了形成回文结构,可以通过在字符串前增加字符的方式来构造。例如序列:AACTCAAA,通过在前面增加A碱基,即可形成回文:AAACTCAAA。

解题思路:

我们需要在字符串前面加字符来构造回文, 那么我们可以反向的, 也就是在字符串结尾依次删除字符, 来判断是否回文, 这样可以得到所需添加的所有字符。

my $str = 'atacg';

由于我们每次删除一个字符, 都需要来判断是否回文, 因此我们把这个判断过程独立出来, 单独写成一个方法。

sub is_hui{ my $str = shift; my @str = split '', $str; my @re_str = reverse @str; for my $s(@str){ my $ss = shift @re_str; if($s ne $ss){ return 0; } } return 1; }

现将字符串切割成字符数组

my @strs = split '', $str;

定义一个数组, 用来按顺序记录被删除的字符

my @poped;

循环操作, 每次删除最后面一个字符, 存入@poped数组, 然后测试是否是回文, 如是回文, 则依次在左侧增加删除的元素即成回文了, 如不是则依次继续循环:

while(1){ my $poped = pop @strs; my $str_tmp = join '', @strs; push @poped, $poped; if(is_hui($str_tmp)){ my $pre = join '', @poped; print "$pre$str\n"; exit; } }

,