字符串比较是恒定成本吗?

Is string comparison a constant cost?

假设我想比较两个字符串 str1 和 str2 是否相等。

p str1 == str2

大O表示法比较运算的复杂度是多少?是 O(1) 吗?

用其他编程语言怎么样?

对我来说最坏的情况是 O(N)。您有一个循环来检查两个字符串中的每个字符。在某些情况下是 O(1):

  • 它们是相同的引用
  • 它们的长度不同
  • 参数对象不是字符串(注意代码是str1.==(str2)
  • 的语法糖

当然,相等性测试不是 O(1)。如果 str1str2 指向同一个对象,那么这可以短路作为 identity 测试,这是 O(1)。 (还有一些其他情况,正如@ursus 所指出的)

How about in other programming languages?

差不多。基础知识不会因语言而异。