文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>perl 求2个字符串最大相同的部分

perl 求2个字符串最大相同的部分

时间:2010-07-22  来源:perl-v

有个朋友问求2个字符串最大串的问题,就用Perl写了一个简单的,供大字参考。

好像其它语言版本的,网上也有,大家去G一下就有了。

代码如下:


#!/usr/bin/perl
use strict;
use warnings;

my $s1 = 'asdfdfdfdfdfdfdfdfdfasf34lk343434343433333fdasfd';
my $s2 = 'asdfdfdfdfdfdfdfdfdf3434343434343jfshasdazlzlasbfasfdllzlz';

my $max = &Analysis($s1,$s2,20);
print "$max\n";
#-------------------------------------------------------------------------------------------------------------------
#前2个参数为2个字符串,分析第一个字符串在
#第二个字符串中最大相同的串
#第三个参数为字符串最小长度,如果没有定义最小
#长度,则默认最小长度为:2
sub Analysis ($$;$)
{
    my ($s1,$s2,$min) = @_;
    $min = 2 if (!defined $min) ;
    my $ss = &getsub($s1,$min);
    @$ss = sort {length($b) <=> length($a)} @$ss;
    foreach my $s (@$ss) {
        if ($s2 =~/$s/)
        {
            return $s;
            last;
        }
    }
    return 'False';
}


sub getsub ($;$)
{
    my ($str,$min) = @_;
    my $len = length($str);
    my @subs;

    for (my $i = 0;$i <= $len - $min ;$i++)
    {
        
        for (my $j = $min ; $j + $i <= $len ; $j++)
        {
            push @subs,substr($str,$i,$j);
        }
    }
    
    return \@subs;
}




在求子串的部分比较笨, 大家有好办法请告诉我啦!!
相关阅读 更多 +
排行榜 更多 +
我要当超人

我要当超人

休闲益智 下载
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载