在Java中为String添加前缀?
我知道在一个字符串中添加一个字符应该花费O(1)次。例如: -在Java中为String添加前缀?
String S = "abc"
S = S+'z';
如果我想要做反之亦然,将字符串连接成char。这是可能的吗?
S = 'z'+S;
如果是,那么需要多少时间? Java是否复制String S {O(n)}的整个内容,或者只是调整内存中的指针{O(1)}?
谢谢!
concat的顺序无关紧要。在最近版本的编译器中,这个(通常)变成使用StringBuilder的字节码。
“StringBuilder”的效率如何? –
我没关系意味着这两项操作都会有相同的复杂性?哪个是O(n)或O(1)? –
您几乎可以将它看作仅由char []而不是Object []支持的ArrayList。根据您所做的操作类型,这将非常快速高效。如果开头的尺寸不合适,或者插入的字符不是最后的字符,则价格会更高。 –
字符串是不可变的。因此,这种操作(添加前缀)无法成为O(1)。它至少与S的大小成线性关系。并且...因为它没有意义(考虑它)是O(f(N)),其中O(f(N))> O(N),这意味着它是O(N)。从常识来看,这很有把握。
查看Java用于字符串连接的'StringBuilder'的实现。 –
您是否确定*将字符添加到字符串应该花费O(1)次?请记住,字符串是不可变的... – awksp
哎呀!实际上并不确定! –