算法擂台——查找在一本书中重复出现的一句话
感谢大家的参与,今天再给大家出一个思考题。
这个问题类似LCS,但是有所不同。
定义:
(1)单词,由A-Z或者a-z构成的字符串,不区分大小写,单词的开头是整个文本的开头,或者任意一个非单词构成字符之后开头,单词的结尾是任意一个非单词字符之前或者整个文本结束。
比如文本 A aa.a3 asdf, a"aa", a's包括的单词是 { a aa a asdf a aa a s }。
(2)句子,由1个或者多个单词组成的串,句子是由整个文本构成的单词串的子串。构成句子的单词是有序的,连续的。句子不一定是自然语言中的一句话,可能是半句,可能是几句。并且不考虑单词之间的非单词字符。句子第一个单词所在位置和长度决定了它们是否是同一个句子。
(3)句子的长度:句子中包含单词序列的数量。
目标:
在大约由几十万单词构成的文本中,找到这样两个不同的句子,它们由完全相同的单词以及序列构成。程序的目标是尽可能匹配文章中最长的句子。
限制:
使用内存以 1GB 为上限,运行时间以 20 秒 * 1GHz 为上限。可以使用多CPU优化程序