2017-04-15 208 views
1

我正在处理的程序使用字符串生成器将整数数组转换为字符串。我试图确定这种方法的时间复杂性。java中StringBuilder.append()的时间复杂度是多少?

+1

究竟你“效率”是什么意思?您正在尝试优化的标准是什么? –

+2

另外值得指出的是,您需要将一种方法的效率定义为另一种可行的方法。因为需要大量的燃料才能将卫星送入轨道,[效率不高](https://space.stackexchange.com/a/17925)(如有用的电力消耗);但在没有其他选择的情况下,“低效率”方法就是你所能做的,所以低效率在很大程度上是无关紧要的。那么,你可以选择什么字符串生成器? –

回答

1

退房:https://stackoverflow.com/a/7156703/7294647

基本上,这是不明确的时间复杂度是什么StringBuilder#append因为它依赖于它的实现,所以你不应该担心。

可能有一种更有效的方法来处理你的int [] - 字符串转换,具体取决于你实际尝试实现的方式。

2

如果StringBuilder需要增加其容量,则需要将整个字符数组复制到新数组。您可以通过初始设置容量来避免这种情况,因此不必执行此操作。 (因为你知道int阵列和字符在intString表示最大数量的长度。这应该很容易。)

如果您避免需要增加容量,复杂性似乎只是上)。在追加时,只需将String中的字符数组复制到StringBuilder中的字符数组的末尾即可。

(是的,它依赖于实现,但它是一个相当糟糕的实现的StringBuilder,如果它不能在O(n)的时间。附加)

+0

这很可能比这更快;它可以为O(1)追加使用类似'LinkedList'的东西。 –

+0

我不确定。如果它是O(1),这意味着你正在复制链接列表本身而不是值 - 那么如果你想追加一些东西到最后,你会不会遇到问题?它会改变原来的。 –

相关问题