字符串比较是恒定成本吗?
Is string comparison a constant cost?
假设我想比较两个字符串 str1 和 str2 是否相等。
p str1 == str2
大O表示法比较运算的复杂度是多少?是 O(1) 吗?
用其他编程语言怎么样?
对我来说最坏的情况是 O(N)。您有一个循环来检查两个字符串中的每个字符。在某些情况下是 O(1):
- 它们是相同的引用
- 它们的长度不同
- 参数对象不是字符串(注意代码是
str1.==(str2)
的语法糖
当然,相等性测试不是 O(1)。如果 str1
和 str2
指向同一个对象,那么这可以短路作为 identity 测试,这是 O(1)。 (还有一些其他情况,正如@ursus 所指出的)
How about in other programming languages?
差不多。基础知识不会因语言而异。
假设我想比较两个字符串 str1 和 str2 是否相等。
p str1 == str2
大O表示法比较运算的复杂度是多少?是 O(1) 吗?
用其他编程语言怎么样?
对我来说最坏的情况是 O(N)。您有一个循环来检查两个字符串中的每个字符。在某些情况下是 O(1):
- 它们是相同的引用
- 它们的长度不同
- 参数对象不是字符串(注意代码是
str1.==(str2)
的语法糖
当然,相等性测试不是 O(1)。如果 str1
和 str2
指向同一个对象,那么这可以短路作为 identity 测试,这是 O(1)。 (还有一些其他情况,正如@ursus 所指出的)
How about in other programming languages?
差不多。基础知识不会因语言而异。