兩個字符串的最大公共子串,是一個程序員們經常考到和想到的題目,聽講是當年微軟面試時要求作的一個程序,寫一個返回兩個任意字串中最大公共串的函數,即abcdef 和 qcfbcc 返回值爲bc
程序員
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Data::Dumper;
- my %hash1;
- my %hash2;
- my @arr;
- my $str1 = 'aab12345678';
- my $str2 = 'ab1234yb1234567';
- $str1 =~ /(.*?)(?{$hash1{$1}=$1})(*F)/; #強制回朔,列舉全部字符串,存入hash
- $str2 =~ /(.*?)(?{$hash2{$1}=$1})(*F)/;
- for (keys %hash1){
- my $k = $_;
- push @arr,$k if exists $hash2{$k};
- }
- my($max,$min)=sort{length($b) cmp length($a)}@arr;
- for (@arr){
- if(length($_)==length($max)){
- print "$_\n";
- }
- }
output:web
b1234567面試