본문 바로가기
Java/알고리즘

[Java] Anagram 판별하기

by EricJeong 2020. 2. 4.

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);
  }

}

댓글