2016-06-29 8 views
-2

文字列の連続したストリームがある場合、実装しようとしています。いつでも、互いの順列であるものが一緒に印刷されるように文字列を印刷する必要があります。例えば文字列を印刷して、互いに並び変えられた文字列を一緒に印刷します。

Input: {‘act’,’cat’,dog’,’tac’,’abc’,’god’,’bac’} 

Output: {‘act’,’cat’ ,’tac’,dog’,’god’,’abc’,’bac’} 

Iはそれぞれ、すべての文字列を並べ替えていますどこ私はこのためのコードを書かれています。このコードをさらに進めるには?

答えて

0

実際の順列は時間がかかりすぎます。各文字列に対して、26カウントの配列を使用することができます。ここで、すべての文字列には小文字のみが含まれていると仮定して、文字列内の文字のインスタンス数をカウントします。文字列に任意の文字を使用できる場合は、256カウントの配列を使用します。これは、2つの文字列がちょうど順列であるかどうかを調べるためのカウントの迅速な比較を可能にする。

いくつかのタイプのコレクション(おそらくマップ)に数え切れないほどの配列を検索/挿入するには、合理的に速い方法が必要です。インデックスのような各文字列の識別子と、どの文字列が互いの順列であるかを示すことができるいくつかのタイプのコレクションも必要です。

マップが使用されていると仮定すると、整数配列のデフォルトコンパレータがない場合は、マップを作成する必要があります。キーはカウントの配列で、値は文字列のインデックスです。 put(key、value)を実行するたびに、同じキーを持つ以前の文字列のヌルまたはインデックスが返されます。

文字列が前の文字列の置換文字列かどうかを確認する方法があるので、この情報を格納する方法(一意の文字列と置換文字列)を理解できるかどうかを確認してください。

+0

あなたは/ –

+0

@JavaDevelopersをお勧めしますか?これは宿題であると仮定して、私は提案しか提供できません。文字列の「一致」を確認するためにマップを使用する方法を示すために、私の答えを更新しました。 – rcgldr

関連する問題