两个字符串的最大公共子串,是一个程序员们常常考到和想到的题目,听讲是当年微软面试时要求做的一个程序,写一个返回两个任意字串中最大公共串的函数,即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"; } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步