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

简介:

两个字符串的最大公共子串,是一个程序员们常常考到和想到的题目,听讲是当年微软面试时要求做的一个程序,写一个返回两个任意字串中最大公共串的函数,即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:

b1234567










本文转自 mcshell 51CTO博客,原文链接:http://blog.51cto.com/mcshell/1071294,如需转载请自行联系原作者

目录
相关文章
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
135 0
面试题 08.08:有重复字符串的排列组合
面试题 08.08:有重复字符串的排列组合
192 0
|
安全 Java 编译器
【Java基础面试二十九】、说一说你对字符串拼接的理解
这篇文章讨论了Java中字符串拼接的四种常用方式(使用`+`运算符、`StringBuilder`、`StringBuffer`和`String`类的`concat`方法),每种方式适用的场景,以及在不同情况下的性能考量。
【Java基础面试二十八】、使用字符串时,new和““推荐使用哪种方式?
这篇文章讨论了在Java中使用字符串时,推荐使用双引号`""`直接量方式而不是使用`new`操作符,因为`new`会在常量池之外额外创建一个对象,导致更多的内存占用。
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
201 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
存储 算法 数据挖掘
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
|
存储 安全 Java
Java面试题:请解释Java中的字符串和字符串缓冲区?
Java面试题:请解释Java中的字符串和字符串缓冲区?
93 0
|
索引 Python Go
【python学习】字符串详解,面试必问公司的问题
【python学习】字符串详解,面试必问公司的问题
|
存储 Java 编译器
Java字符串变量声明与赋值的常见面试题——完整剖析
Java字符串变量声明与赋值的常见面试题——完整剖析
106 1
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
578 0

热门文章

最新文章