您的位置:首页 > 职场人生

求两个字符串最大公共字符串(听说是微软几年前面试题)

2012-11-26 21:39 393 查看
两个字符串的最大公共子串,是一个程序员们常常考到和想到的题目,听讲是当年微软面试时要求做的一个程序,写一个返回两个任意字串中最大公共串的函数,即abcdef 和 qcfbcc 返回值为bc

注:你要考虑到字符串中最大公共串相等的问题。
例如
dddabd123456abcdefeeeee
234dddabcdegeeee

输出:
dddab
abcde

#!/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:

b1234567

本文出自 “mcshell学习博客” 博客,请务必保留此出处http://mcshell.blog.51cto.com/803455/1071294
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: