私は単語のArrayListを持っています、そして、それらを互いに比較して、それらをHashTable(アナグラムのグループ)に格納したいと思います。ハッシュテーブルに単語のグループを格納する
私は2つのワードをアナグラムかどうかをテストする方法を知っていますが、長いリストの比較方法を理解することはできません。例えば
:
- それらのリスト
- 5で10個の単語がそれらの互いに
- 2のアナグラムがあり、またお互いのアナグラムである(ただし、第1グループの)されています
- したがって、3つのグループ。 1セットのアナグラム(5ワード)、1グループ(2ワード)、および1グループ(3ワード)のランダムワードのグループ1つのグループを選択します。
+ 2アナグラムを作成し、それらのアナグラムグループ(別々に)をハッシュテーブルに保存しますか?
EDIT:
二つの単語を比較するため、私が持っているコード:
public static boolean isAnagram(String firstWord, String secondWord) {
boolean anagram;
if (firstWord.length() != secondWord.length()) {
return false;
}
firstWord = firstWord.toLowerCase();
secondWord=secondWord.toLowerCase();
char[] c1 = firstWord.toCharArray();
char[] c2 = secondWord.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
String sc1 = new String(c1);
String sc2 = new String(c2);
if (sc1.equals(sc2)) {
System.out.println("ANAGRAMS");
} else {
System.out.println("NOT ANAGRAMS");
}
return sc1.equals(sc2);
}
私はこれは文字列の無制限の量を比較することで動作するように適合させることができると確信しています。次のジレンマは、アナグラムの別々のグループがハッシュテーブルに格納されていることを保証することです。
あなたが何をしようとしたのですか? – Kajal
ブルートフォース解決策は、アナグラムを見つけるたびに、すべての単語を他の単語と比較して保存することです。 – Bhargav
最も単純な方法は、すべての単語をループし、各単語* w *を他の単語と比較することです。ハッシュテーブルを作成します。* w * - > * w *のアナグラム。 – Shaido