2017-04-15 8 views
1

私が作業しているプログラムは、整数の配列を文字列ビルダーを使って文字列に変換します。私はこのアプローチの複雑さを判断しようとしています。JavaでのStringBuilder.append()の複雑さはどのくらいですか?

+1

あなたは「効率性」によって、正確に何を意味するのですか?最適化しようとしている基準は何ですか? –

+2

もう1つの実現可能なアプローチに関してあるアプローチの効率を定義する必要があることも指摘する価値があります。衛星を軌道に打ち上げるには膨大な量の燃料が必要です(効率的ではありません)(https://space.stackexchange.com/a/17925)。代替手段がない場合は、「非効率的」なアプローチができますので、非効率性はほとんど無関係です。では、文字列作成ツールの代わりになるのは何ですか? –

答えて

1

チェックアウト:https://stackoverflow.com/a/7156703/7294647

を基本的に、それはあなたがそれを心配する必要はありませんので、それは、その実装に依存するので、時間複雑性がStringBuilder#append何のためにあるのかは明らかではありません。

実際に達成しようとしていることに応じて、int [] - 文字列変換に近づく方が効率的かもしれません。

2

StringBuilderの容量を増やす必要がある場合は、文字配列全体を新しい配列にコピーする必要があります。最初に容量を設定して、これを行う必要がないようにすることで、これを回避できます。 (あなたがintアレイとintString表現の最大文字数の長さを知っているので、これは簡単なはずです。)

あなたは容量を増加させる必要性を回避した場合、複雑さがちょうどように思われますに)。追加すると、Stringの文字配列がStringBuilderの文字配列の最後にコピーされます。

(はい、それは実装に依存しますが、それは)N(Oで時間を追加することができなかった場合、それはStringBuilderのかなり貧弱な実装になります。)

+0

これはおそらくそれより速いでしょう。 O(1)追加のために 'LinkedList'のようなものを使うことができます。 –

+0

私はそれについては分かりません。それがO(1)ならば、値の代わりにリンクされたリスト自体をコピーしていることになります。最後に何かを追加したい場合、問題に遭遇しませんか?オリジナルを変更します。 –

関連する問題