解答例
以下に今回の解答例を記載します。
public class Chapter1_2 { public static void main(String[] args) { String word1 = "apple"; String word2 = "alpha"; boolean isResult = checkWords(word1, word2); System.out.println("Result is " + isResult); } public static boolean checkWords(String wrd1, String wrd2) { if (wrd1.length() != wrd2.length()) { return false; } return sort(wrd1).equals(sort(wrd2)); } public static String sort(String s) { char[] content1 = s.toCharArray(); java.util.Arrays.sort(content1); return new String(content1); } }
解説
考え方としまして、今回は大文字、小文字を区別し、スペースが入っても別物として考えるため、与えられた文字列を一旦配列に分解し、ソートさせてしまえば良いです。
具体的に説明しましょう。
まず、checkWords()
に今回のテストする2単語(apple, alpha)を渡し、文字列の長さを確認しています。この部分に関しては、問題を解く上では必要ないかもしれません。
その後、sort()
を作成します。
ここでは、文字列を配列に入れ、sort関数でソートさせています。
そして、String型でソートした文字列を返しています。
最後に、return sort(wrd1).equals(sort(wrd2));
でソート後の2つの文字列を比較し、判定させいます。
如何でしょうか?やり方は他にもあるかもしれません。例えば、同じ文字をの数を数える様なアルゴリズムでも、問題ありません。アルゴリズムは千差万別です。
以上です。