快速比较两个字符串

时间:2015-12-30 17:02:43

标签: string algorithm pattern-matching time-complexity

是否可以从相同的给定大字符串比O(n)更快地比较两个相同长度的子串? (其中n是子串的长度) 我的意思是,如果你有类似&#34的查询;比较x1,y1位置与x2,y2位置和#34之间的子串;

2 个答案:

答案 0 :(得分:1)

您可以为大字符串计算后缀数组。

此数组告诉您从x1开始的字符串顺序与从X2开始的字符串顺序的比较。

在结束之前,您需要检查字符串是否已分叉(或者字符串可能相等)。您可以使用滚动哈希或使用最长公共前缀数组来执行此操作。

有一个关于后缀数组HERE

的好教程

答案 1 :(得分:0)

原则上,字符串搜索算法比检查每个字符要快,但它们都与搜索的数据量成正比。

e.g。 extbndm,Boyer-Moore

有多字符串搜索算法(例如Aho-Corasaik),但在一天结束时,它们都是订单O(n)。您可以管理常量部分,但需要搜索整个字符串。