2017-04-15 44 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),這意味着你正在複製鏈接列表本身而不是值 - 那麼如果你想追加一些東西到最後,你會不會遇到問題?它會改變原來的。 –

相關問題