【发布时间】:2018-06-11 22:01:34
【问题描述】:
所以这似乎是一个超级基本的问题,但我想知道 javascript 内置的 .toUpperCase() 方法 - 时间效率是 O(n) 还是 O(1)?
我一直只是假设它会是恒定的时间,但现在我想它......“在引擎盖下”这种方法不需要遍历每个字符来一个一个地检查它是否是小写的吗? (因此使其成为 O(n)
【问题讨论】:
-
是的,内部字符串必须一次处理一个字符(实际上是一个代码点)。
-
O(n),你必须遍历字符并操作它们。还要注意 toUpperCase() 确实是不可变的,所以它返回字符串的副本......所以再次 O(n)
-
即使它没有改变任何东西,它也必须复制一个字符串,即
O(n)。 -
@barmar 但是,不是因为它必须遍历每个字符才使它成为 O(n) 吗? “复制”部分不是 O(1) 吗?
-
我做了一些性能测试。
toUpperCase的持续时间似乎随着字符串长度线性增长,尽管它可以忽略不计。
标签: javascript algorithm performance big-o