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;
}
}
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!