私は2つ持っていArrayList<String>
ます。1 つは句読点と大文字を含む単語を含み、もう 1 つはこれらが削除されています。
リスト1:
File word: it's
File word: Sit
File word: yes-man
File word: murdered
File word: ok
File word: DereDrum
File word: Hello
File word: Friend
リスト 2:
Edited word: its
Edited word: sit
Edited word: yesman
Edited word: murdered
Edited word: ok
Edited word: deredrum
Edited word: hello
Edited word: friend
アイデアは、どの単語が互いにアナグラムであるかをチェックして確認することでした. もしそうなら、私がやりたいのはそれらを再版することだけですが、互いに同じ行にアナグラムである単語を入れてください:
it's Sit
yes-man
murdered DereDrum
ok
hello
friend
私はこれを次のようにしようとしました:
for (int i = 0; i < words.size(); i++)
{
System.out.print(words.get(i));
for (int j = i+1; j < grams.size(); j++)
{
anagramChecker(grams.get(i),"",grams.get(j),words.get(j));
}
System.out.println();
}
私が念頭に置いていた方法は、この for ループが List1(words) のサイズの間持続し、それが見ている単語を出力することでした。次に、anagramChecker を使用します。
public static void anagramChecker(String s1,String s2,String checked,String word)
{
if(s1.length() == 0)
{
if(s2.equals(checked))
{
System.out.println(" " + word);
return;
}
}
for(int i = 0 ; i < s1.length() ; i++)
{
anagramChecker(s1.substring(0, i) + s1.substring(i+1, s1.length()),s2 + s1.charAt(i),checked,word);
}
}
この方法は機能せず、出力は次のようになりました。
it's
Sit yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
yes-man
murdered
ok
DereDrum Hello
Hello
Friend
2番目のリストで単語自体がアルファベット順にソートされた後、単語をアルファベット順にソートできるように、マップを使用してみました。それはほぼ同じ出力を持っていました。