Java 字符串匹配和整数匹配的时间复杂度
字符串匹配和整数匹配在时间复杂度方面有什么不同Java 字符串匹配和整数匹配的时间复杂度,java,c,string,integer,time-complexity,Java,C,String,Integer,Time Complexity,字符串匹配和整数匹配在时间复杂度方面有什么不同 我问这个问题,特别是关于拉宾卡普算法。为什么为每个子字符串计算哈希代码并检查其是否与给定搜索字符串的哈希代码相等比只检查任何子字符串是否与给定字符串匹配的简单方法要快?通常,在设计算法时,假设机器模型是任意两个整数(适合于机器字的)可以在恒定时间内进行比较。由于字符串可以比单个机器字长,因此比较两个长度为n的字符串需要进行O(n)比较。因此,比较两个机器字要比比较两个字符串快 Rabin-Karp算法是有效的,因为它使用哈希代码的比较来最小化实际需
我问这个问题,特别是关于拉宾卡普算法。为什么为每个子字符串计算哈希代码并检查其是否与给定搜索字符串的哈希代码相等比只检查任何子字符串是否与给定字符串匹配的简单方法要快?通常,在设计算法时,假设机器模型是任意两个整数(适合于机器字的)可以在恒定时间内进行比较。由于字符串可以比单个机器字长,因此比较两个长度为n的字符串需要进行O(n)比较。因此,比较两个机器字要比比较两个字符串快 Rabin-Karp算法是有效的,因为它使用哈希代码的比较来最小化实际需要进行昂贵字符串比较的次数。具体而言,Rabin-Karp仅在子字符串与模式字符串具有与原始模式字符串相同的哈希代码的情况下,才将该子字符串与模式字符串进行比较,从而消除了大量错误不必要的工作
希望这会有所帮助!通常,在设计算法时,您假设机器模型是这样的:任何两个整数(适合机器字)都可以在恒定时间内进行比较。由于字符串可能比单个机器字长,因此比较两个长度为n的字符串需要O(n)比较。因此,比较两个机器字比比较两个字符串要快 Rabin-Karp算法是有效的,因为它使用哈希代码的比较来最小化实际需要进行昂贵字符串比较的次数。具体而言,Rabin-Karp仅在子字符串与模式字符串具有与原始模式字符串相同的哈希代码的情况下,才将该子字符串与模式字符串进行比较,从而消除了大量错误不必要的工作 希望这有帮助