求兩個字符串最大公共字符串(據說是微軟幾年前面試題)

兩個字符串的最大公共子串,是一個程序員們經常考到和想到的題目,聽講是當年微軟面試時要求作的一個程序,寫一個返回兩個任意字串中最大公共串的函數,即abcdef 和 qcfbcc 返回值爲bc
 程序員

注:你要考慮到字符串中最大公共串相等的問題。
例如
dddabd123456abcdefeeeee
234dddabcdegeeee

 
輸出:
dddab
abcde

 

  
  
  
  
  1. #!/usr/bin/perl  
  2. use strict;  
  3. use warnings;  
  4. use Data::Dumper;  
  5. my %hash1;  
  6. my %hash2;  
  7. my @arr;  
  8. my $str1 = 'aab12345678';  
  9. my $str2 = 'ab1234yb1234567';  
  10.  $str1 =~ /(.*?)(?{$hash1{$1}=$1})(*F)/;  #強制回朔,列舉全部字符串,存入hash
  11.  $str2 =~ /(.*?)(?{$hash2{$1}=$1})(*F)/;  
  12.    for (keys %hash1){  
  13.        my  $k = $_;  
  14.         push  @arr,$k if exists $hash2{$k};      
  15.    }  
  16.    my($max,$min)=sort{length($b) cmp length($a)}@arr;  
  17.    for (@arr){  
  18.     if(length($_)==length($max)){  
  19.         print "$_\n";  
  20.     }  
  21.    }  

output:web

b1234567面試

相關文章
相關標籤/搜索