題目描述
當兩字串是由相同的字元組成時,被稱作變位詞。變位詞可能有不同的字元排序方式,舉例來說「CAT」的變位詞有「CAT」、「ACT」、「TAC」、「TCA」、「ATC」和「CTA」。
給定兩個字串,如果他們是變位詞的話,輸出「Anagrams」,否則輸出「Not Anagrams」。每個字串最多包含50個英文字母,大小寫不同的字母視為不同的字元。
原題網址
範例輸入1
anagram
margana
margana
範例輸出1
Anagrams
範例輸入2
anagramm
marganaa
marganaa
範例輸出2
Not Anagrams
解題概念
先判斷兩字串的長度是否相同,如果不相同,兩字串必定不是變位詞。
接著將兩字串轉為字元陣列,使用Arrays類別所提供的sort方法來進行排序。然後依序比較兩字元陣列的元素是否相同,如果相同,表示兩字串為變位詞;如果不相同,表示兩字串不是變位詞。
參考答案
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
private static boolean isAnagram(final String A, final String B) {
final int lengthA = A.length();
final int lengthB = B.length();
if(lengthA != lengthB){
return false;
}
final char[] a = A.toLowerCase().toCharArray();
final char[] b = B.toLowerCase().toCharArray();
Arrays.sort(a);
Arrays.sort(b);
for(int i = 0; i < lengthA; ++i){
if(a[i] != b[i]){
return false;
}
}
return true;
}
public static void main(final String[] args) {
final Scanner sc = new Scanner(System.in);
final String A = sc.next();
final String B = sc.next();
final boolean ret = isAnagram(A, B);
if (ret) {
System.out.println("Anagrams");
} else {
System.out.println("Not Anagrams");
}
}
}