微软面世试题-最大公共串-求两个字符串的最大公共子串的一个有意思的题目

微软还用perl?

面试 面世
人家当时的要求是,无论你用什么方法来写
经典DP,开矩阵是对地,效率最高.
Perl中可能效率不是最高也说不定。
我是外行,不会编程。
不过,不知道“卷积”可行不?
perl 新手, 写个试试

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

&max_index_of_two_string('xabcdxxxveafa', 'eabcafeveafaeagagade');

sub max_index_of_two_string()
{
    my ($str1, $str2) = @_;
    my $max_index_of_two_string = undef;
    if (length($str1) < length($str2)) {
        my $str = $str1;
        $str1 = $str2;
        $str2 = $str;
    }
    my $mark = 2;
    while (length($str2) > 0) {
        while ($mark <= length($str2)) {
            my $pattern = substr($str2, 0, $mark);
            if ($str1 =~ /$pattern/) {
                if (length($pattern) > length($max_index_of_two_string)) {
                    $max_index_of_two_string = $pattern;
                }
            }
            $mark++;
        }
        if ($str2 =~ /(.)(.*)/) {
            $str2 = $2;
            $mark = 2;
        }
    }
    print $max_index_of_two_string;
}

my $str = $str1;
        $str1 = $str2;
        $str2 = $str;
标准c语言写法。
perl 写法:
($str1,$str2)=($str2,$str1);


QUOTE:
原帖由 machine 于 2009-1-6 10:36 发表
my $str = $str1;
        $str1 = $str2;
        $str2 = $str;
标准c语言写法。
perl 写法:
($str1,$str2)=($str2,$str1);

这样就可以swap了,又学到新东西啊。