代码改变世界

实用算法实现-第 8 篇 后缀树和后缀数组 [3 两个字符串的最长公共子串]

2011-10-16 12:56  myjava2  阅读(354)  评论(0编辑  收藏  举报

8.4    两个字符串的最长公共子串

两个串的最长公共字串是相对于多个串要简单一点,不需要二分A。只需要判断相邻两个Height是不是分属两个字符串即可。

8.4.1   实例

PKU JudgeOnline, 2774, Long Long Message.

8.4.2   问题描述

给两个小写ASCII字母组成的字符串,求出它们最大公共子串的长度。

相比PKUJudgeOnline, 3450, Corporate Identity,这个题目比较简单,而且测试数据并不强,没有测出求Height数组的一个错误。

8.4.3   输入

yeshowmuchiloveyoumydearmotherreallyicannotbelieveit

yeaphowmuchiloveyoumydearmother

8.4.4   输出

27

8.4.5   分析

采用的算法是DC3算法,源程序可以在[i]下载。该算法实现得相当巧妙,所以只添加注释和计算height的函数,就可以使用了。

8.4.6   程序

本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article


[i] http://www.mpi-sb.mpg.de/~sanders/programs/suffix/