2つの文字列がアナグラムかどうかをチェックするJavaプログラム| アナグラムプログラム

公開: 2021-07-23

目次

Javaに関するあまり知られていない事実

最も耐久性のあるプログラミング言語の1つであるJavaは、その堅牢で柔軟な機能により、世界中で使用されています。 Javaの安定性と汎用性により、Javaは最も人気のあるプログラミング言語の1つになっています。 ただし、この安全なプログラミング言語については、あまり知られていない事実がいくつかあります。 それらのいくつかを知ってみましょう。

  • オークはJavaの元の名前です。
  • このプログラミング言語を学びながら、たくさんの収入を得ることができます。
  • Javaは、世界で2番目に人口の多いプログラミング言語であり、最初の言語はCです。
  • 世界中で約30億台のデバイスがJavaで動作しています。
  • Javaは大文字と小文字を区別するプログラミング言語です。 つまり、「Final」と「final」はJavaコードで同じではありません。 Javaが開発者にとても人気がある理由についてもっと読む。

アナグラムの概要

文字列を文字列に並べ替えて別の文字列に変換する場合、2つの文字列は互いにアナグラムであると言われます。 ただし、最初の文字列と取得される文字列の文字数は同じである必要があります。 アナグラムの概念をよりよく理解するために、「神」と「犬」の2つの文字列を考えてみましょう。

文字列「god」と「dog」は、文字「d」と「g」の位置を入れ替えるだけで前者の文字列を再配置して後者を取得できるため、互いにアナグラムです。 任意の2つの入力文字列について、各文字の頻度が計算され、文字列が相互のアナグラムであるかどうかがチェックされます。 したがって、文字列のアナグラムは、任意のシーケンスの入力文字列と同じ頻度で同じ文字を持つ他の文字列として定義できます。

Javaのアナグラムプログラムのアルゴリズム

ステップ1:2つの入力文字列を定義します。

ステップ2:各文字列の長さが決定されます。 文字列の長さが異なる場合、入力文字列は相互のアナグラムではありません。

ステップ3:文字列の長さが同じである場合、比較を容易にするために、文字列文字は小文字に変換されます。

ステップ4:文字列文字は、組み込み関数によってソートされるか、文字配列に変換されてからソートされます。

ステップ5:ソートされた文字の配列が等しいかどうかがチェックされます。

JavaでのAnagramプログラムの実装

2つの文字列がアナグラムであるかどうかを確認するコードを実装するには、いくつかの解決策があります。 以降のセクションで説明する各ソリューションでは、上記のアルゴリズムのステップ2が基礎を形成し、文字列の長さが一致しない場合の早期終了を容易にします。 以降のセクションでは、アナグラムロジックのコードを記述するさまざまなタイプについて詳しく理解しましょう。

ソートアプローチ

各入力文字列の文字を並べ替えて、2つの正規化された文字配列を取得できます。 両方の入力文字列の正規化された配列が同じである場合、文字列は互いにアナグラムであると見なされ、その逆も同様です。

このコードの理解と実装は簡単です。 上記のソリューションの時間計算量はO(n log n)であり、入力文字列の文字配列を格納するために追加のスペースが必要です。

世界のトップ大学からオンラインでソフトウェア開発コース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

アナグラムロジックを実装するためのカウントアプローチ

このアプローチでは、2つの入力文字列内の各文字の存在数が測定されます。 両方の文字列の各文字の頻度が同じである場合、文字列は互いにアナグラムです。

メモリを節約するために単一のヒストグラムを作成しましょう。 最初の文字列では、各文字のカウントが増加しますが、2番目の文字列ではカウントが減少します。 最終的な結果がすべてをゼロにバランスさせる場合、文字列はアナグラムです。

このソリューションは前のソリューションよりも高速に実行され、時間計算量はO(n)です。 ただし、文字数を数えるには追加のスペースが必要です。 このソリューションは、文字範囲が狭い文字列に対してのみ実際に効果的です。 このソリューションのもう1つの事実は、限られた数の組み込みJava関数を使用するため、コードの長さが長くなることです。

チェックアウト: Javaプロジェクトのアイデアとトピック

MultiSetで確認してアナグラムを決定する

同一の要素との順序に依存しない比較を支援するコレクションであるMultiSetを使用すると、このソリューションでのカウントと比較のプロセスが簡素化されます。

各入力文字列は、最初に文字のマルチセットに変換されてから、パリティがチェックされます。

このソリューションの時間計算量はO(n)です。 これは、アナグラムを決定するためのカウントアプローチに似ています。 ただし、より長い文字列に対しては効率的に機能します。 また、コーディングには、より多くのJavaライブラリ関数が含まれます。

アナグラムを決定するための文字ベースのアプローチ

これまでに説明したすべてのソリューションでは、句読文字も文字列の一部と見なされます。 さらに、これらのソリューションでは大文字と小文字が区別されます。 文字ベースのアプローチは、アナグラムの言語定義に基づいて入力文字列をチェックするコードを実装します。 このアプローチでは、空白と句読点は入力文字列の一部とは見なされません。

文字ベースのソリューションを実装する際の最初のステップは、不要な文字を削除し、すべての有効な文字を小文字に変換することです。 この手順の後、上記の実装のいずれかを使用して、文字列がアナグラムであるかどうかを確認できます。

Java、フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのソフトウェア開発のエグゼクティブPGプログラム–フルスタック開発の専門分野をチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニングを提供します。 、9以上のプロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、およびトップ企業との雇用支援。

あなたの夢の仕事に着陸

IIIT-Bからソフトウェア開発のエグゼクティブPGプログラムに申し込む