字符串匹配和整数匹配的时间复杂度

时间:2014-03-10 19:00:49

标签: java c string integer time-complexity

字符串匹配和整数匹配在时间复杂度方面有何不同?

我问这个特别是关于Rabin Karp算法。为什么为每个子字符串计算哈希代码并检查它与给定搜索字符串的哈希码的相等性比仅仅检查任何子字符串是否与给定字符串匹配的简单方法更快?

1 个答案:

答案 0 :(得分:3)

通常,在设计算法时,您假设机器模型是可以在恒定时间内比较任何两个整数(适合机器字)。由于字符串可能比单个机器字长,因此比较两个长度为n的字符串将需要进行O(n)比较。因此,比较两个机器字比比较两个字符串更快。

Rabin-Karp算法是有效的,因为它使用哈希码的比较来最小化实际需要昂贵的字符串比较的次数。具体来说,如果子字符串与原始模式字符串具有相同的哈希码,Rabin-Karp只会将子字符串与模式字符串进行比较,从而消除了大量不必要的工作。

希望这有帮助!