是否可以从相同的给定大字符串比O(n)更快地比较两个相同长度的子串? (其中n是子串的长度) 我的意思是,如果你有类似&#34的查询;比较x1,y1位置与x2,y2位置和#34之间的子串;
答案 0 :(得分:1)
您可以为大字符串计算后缀数组。
此数组告诉您从x1开始的字符串顺序与从X2开始的字符串顺序的比较。
在结束之前,您需要检查字符串是否已分叉(或者字符串可能相等)。您可以使用滚动哈希或使用最长公共前缀数组来执行此操作。
有一个关于后缀数组HERE
的好教程答案 1 :(得分:0)
原则上,字符串搜索算法比检查每个字符要快,但它们都与搜索的数据量成正比。
e.g。 extbndm,Boyer-Moore
有多字符串搜索算法(例如Aho-Corasaik),但在一天结束时,它们都是订单O(n)。您可以管理常量部分,但需要搜索整个字符串。