反转C++字符串的时间复杂度

Time Complexity in Reversing a C++ String

本文关键字:时间复杂度 字符串 C++ 反转      更新时间:2023-10-16

我的作业中有一个问题,即在只有 O(1) 额外内存的情况下,将C++字符串中的单词反转到位。我对 O(1) 额外内存的含义感到困惑。我理解 O(1) 通常意味着什么,无论输入有多大,计算时间都是恒定的,所以我猜我应该只添加一条内存来反向跟踪单词。有什么建议吗?

O(1) 额外内存意味着"最多使用一些恒定的额外内存"。 例如,你不能存储字符串的副本,因为这会占用 O(n) 空间,但你可以存储任何恒定数量的额外int s、char s 等。

更一般地说,像"O(1)"或"O(n)"这样的语句不一定是指运行时。 Big-O 表示法是一种描述函数的方式。 算法不能是 O(n),但其运行时可以是 O(n)。 算法的空间使用量同样可以是 O(1)、O(n)、O(2n) 等。

希望这有帮助!