字符串比较是不变的成本吗?

时间:2017-03-07 20:20:47

标签: ruby big-o

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

p str1 == str2

大O表示法中比较操作的复杂性是多少?是O(1)吗?

其他编程语言怎么样?

2 个答案:

答案 0 :(得分:1)

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

  • 它们是相同的参考
  • 他们有不同的长度
  • 参数对象不是字符串(请注意,该代码是str1.==(str2)的语法糖

答案 1 :(得分:0)

当然,对平等的测试不是O(1)。如果str1str2指向同一个对象,那么这可能会短路为身份测试,即O(1)。 (还有其他一些案例,正如@ursus所指出的那样)

  

其他编程语言怎么样?

几乎一样。基础知识不会因语言而异。