【发布时间】:2014-06-11 21:11:15
【问题描述】:
我知道在字符串中添加一个字符需要 O(1) 时间。例如:-
String S = "abc"
S = S+'z';
如果我想反之亦然,将字符串连接成 char。可以这样吗?
S = 'z'+S;
如果是,那需要多长时间? Java 是复制 String S{O(n)} 的全部内容还是只是调整内存中的指针 {O(1)}?
谢谢!
【问题讨论】:
-
看一下
StringBuilder的实现,Java用于字符串连接。 -
你确定向字符串添加一个字符需要 O(1) 时间吗?请记住,字符串是不可变的...
-
糟糕!实际上不确定!
-
如果Java复制内存来创建一个新的字符串,它会非常快,不像复制或调整字符串中的字符:-/
-
复制内存仍然是一个 O(n) 操作(至少在 Java 中。我不确定 C/C++/其他低级语言可以用
memcpy做什么)。如果您必须复制大量长字符串,它可能会更慢。
标签: java string concatenation