Java/알고리즘
[Java] Anagram 판별하기
EricJeong
2020. 2. 4. 23:52
Anagram이란
Anagram이란 문자의 종류, 빈도가 같은 두 문자열을 의미합니다.
예를 들면 아래와 같은 문자열은 Anagram입니다.
abcd | acdb |
ttmt | mttt |
bobobo | obobob |
두 문자열이 Anagram인지 판별하기 위해서 저는 다음과 같은 알고리즘을 사용할 것입니다.
1. 문자열을 문자 배열로 변환한다.
2. 문자 배열을 정렬한다.
3. 정렬된 문자 배열이 같은지 비교한다.
문자열을 정렬한 후 비교해서 같다면 문자의 종류, 빈도가 같으니 Anagram이라 할 수 있습니다.
코드
import java.util.Arrays;
public class Anagram {
public static boolean isAnagram(String str1, String str2) {
// 1. 문자열을 문자 배열로 변환한다.
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
// 2. 문자 배열을 정렬한다.
Arrays.sort(charArray1);
Arrays.sort(charArray2);
// 3. 정렬된 문자 배열이 같은지 비교한다.
return Arrays.equals(charArray1, charArray2);
}
}