두 문자열 a,b가 동일한 빈도로 동일한 문자를 포함하면 아나그램이라고 부른다. 이 챌린지에서 대소문자 구분은 없다. 예를 들어 CAT의 아나그램은 CAT, ACT, tac, TCA, aTC, CtA이다.
string a,b라는 파라미터가 첫번째, 두번째 string이며
a,b가 대소문자를 구분하지 않는 아나그램이면 true를 반환하고 아니면 false.
예시로 아래와 같이 anagram margana라는 두 string이 입력된다면
Anagrams가 프린트된다.
한 개의 문자 값에 대한 자료형은 char 를 이용한다. char 자료형은 다음과 같이 사용한다.
이때 문자값은 '(단일 인용부호)로 감싸주어야 한다.
char a1 = 'a';
toCharArray()
import java.util.Arrays;
public class StringToCharArray {
public static void main(String[] args) {
String str = "How are you";
// 문자열 -> char 배열로 변환
char[] charArr = str.toCharArray();
// char 배열 출력
System.out.println(Arrays.toString(charArr));
}
}
결과: [H, o, w, , a, r, e, , y, o, u]
str.toCharArray();
java.lang.String 클래스의 toCharArray() 메소드는 주어진 문자열을 char 배열 형태로 리턴한다.
Arrays.toString(charArr);
char 배열로 변환된 값을, 배열을 다시 문자열로 변환하여 출력하는
Arrays.toString() 메소드를 호출하여 출력한다.결과는 배열 형태로 출력된다.
java.util.Arrays 유틸리티 클래스를 사용하면 배열(Array)을 정렬, 복제하거나,
List로 변환 하는 등의 작업을 쉽게 처리할 수 있다.
그 중에서 sort() 메서드는 클래스 메서드(Class method / Static method)로써
Arrays 클래스의 인스턴스 생성없이 바로 사용할 수 있다.
import java.util.Arrays;
public class Sort {
public static void main(String[] args) {
int arr[] = {4, 33, 24, 15, 17, 21};
Arrays.sort(arr);
for(int i : arr) {
System.out.print("[" + i + "]");
}
}
}
// [4][15][17][21][24][33] 이 출력됨!
import java.util.Arrays;
public class Sort {
public static void main(String[] args) {
int arr[] = {4, 33, 24, 15, 17, 21};
Arrays.sort(arr, Collections.reverseOrder());
for(int i : arr) {
System.out.print("[" + i + "]");
}
}
}
// [33][24][21][17][15][4]이 출력됨!
import java.util.Arrays;
public class Sort {
public static void main(String[] args) {
String arr[] = {"apple", "melon", "peach", "banana", "orange"};
Arrays.sort(arr);
for(String i : arr) {
System.out.print("[" + i + "]");
}
}
}
// [peach][orange][melon][banana][apple]이 출력됨!
import java.util.Scanner;
public class Solution {
static boolean isAnagram(String a, String b) {
// Complete the function
String aa = a.toLowerCase();
String bb = b.toLowerCase();
// 대,소문자를 가리지 않으므로 전부 소문자로 변경해도 무방
char[] aaa = aa.toCharArray();
char[] bbb = bb.toCharArray();
// string 문자열을 char 배열로 변환한다.
java.util.Arrays.sort(aaa);
java.util.Arrays.sort(bbb);
return java.util.Arrays.equals(aaa,bbb);
// sort로 정렬해 aaa, bbb 두 배열의 내용이 같은지 비교한다.
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String a = scan.next();
String b = scan.next();
scan.close();
boolean ret = isAnagram(a, b);
System.out.println( (ret) ? "Anagrams" : "Not Anagrams" );
}
}