コーディング問題 #2 【解答】 重複しない文字列

f:id:MasayaStripes:20200810232941j:plain

解答例

以下に今回の解答例を記載します。

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つの文字列を比較し、判定させいます。

如何でしょうか?やり方は他にもあるかもしれません。例えば、同じ文字をの数を数える様なアルゴリズムでも、問題ありません。アルゴリズムは千差万別です。

以上です。