2016-05-05 17 views
3

私は、ユーザに提案を与える綴り修正を書いています。これを行うには、私は距離1と2の編集距離離れて単語を使用しています。単語の一文字を挿入する二つの隣接文字を転置単語の一文字、 文字列対文字配列対文字列作成者(効率性能)

  • を削除

    • 単語の一文字の変化、及び
    • :4つの技術があります。

    これらの中には、単語を繰り返して2つの文字を入れ替える方法や、文字列の途中に文字を追加する方法などがあります。私は、文字列を知っている

    はJavaで不変であり、文字列ビルダからの挿入は、必要に応じて、文字列のコピーを作成する場合がありますので、charの配列は、任意のより速くこれをするだろうかと思いまして。より多くのコンテキストなし - - 最速になる様々なアプローチのどの

  • +2

    1)状況に合わせてベンチマークを行う必要があります。 2) 'StringBuilder'は、' char [] '(必要に応じて配列のサイズを変更し、挿入/削除時に要素を移動するようなことをする)のラッパーです。 []を直接いくつか使うと便利ですが、多くの便利な機能が失われてしまいます。 –

    +0

    @AndyTurnerそれはよい答えのようです:) –

    +0

    Javaコンパイラが文字列操作(+演算子のような)をStringBuilderに置き換えるのに十分スマートで、しばしばこれらの種類の決定を不要にすることに言及する価値があります。 http://stackoverflow.com/questions/1532461/stringbuilder-vs-string-concatenation-in-tostring-in-javaも参照してください。 –

    答えて

    2

    言うのは非常に困難です。 (または、速度の差が関連している場合でも、その速度が最も重要な指標である場合でも)。

    状況に応じてさまざまなアプローチをベンチマークする必要があります。


    StringBuilder必要に応じて配列のサイズを変更するような機能を追加し、char[]周りだけのラッパーです。あなたが挿入/削除するときに要素を動かす。

    char []をいくつかのものに直接使うほうが少し速いかもしれないが、多くの便利な機能を失う(または再実装する必要がある)。