HOWTO · Java
자바의 아나그램
이 자습서에서는 두 문자열이 Java에서 아나그램인지 확인하는 방법에 대해 설명합니다.
이 페이지의 내용
단어를 가지고 노는 것을 좋아한다면 아나그램이라는 용어를 이미 알고 있을 것입니다. 두 문자열이 동일한 문자를 포함하지만 다른 단어로 포함되어 있으면 서로를 아나그램이라고 합니다.
예를 들어 Race와 Care라는 두 단어가 있는 경우 해당 단어를 보면 동일한 문자를 포함하지만 순서가 다른 것을 볼 수 있습니다.
따라서 Race와 Care라는 단어를 서로 애너그램이라고 부를 수 있습니다.
이 기사에서는 두 단어가 아나그램인지 아닌지를 어떻게 알 수 있는지 알아볼 것입니다. 주제를 쉽게 이해할 수 있도록 예제와 설명으로 주제를 다룰 것입니다.
자바에서 아나그램 찾기
아래 예에서 주어진 두 문장이 철자인지 여부를 확인하는 방법을 설명했습니다. 예제 코드는 다음과 같습니다.
// importing necessary packages
import java.util.Arrays;
public class JavaAnagram {
static void MatchAnagram(String str1, String str2) {
String Str_1 = str1.replaceAll("\\s", ""); // Removing the spaces from the first string
String Str_2 = str2.replaceAll("\\s", ""); // Removing the spaces from the second string
boolean Status = true;
if (Str_1.length() != Str_2.length()) { // Checking the length of two string
Status = false;
} else {
// Converting all the characters to lower case and putting the chars of the string into a
// character
char[] StringArray1 = Str_1.toLowerCase().toCharArray();
char[] StringArray2 = Str_2.toLowerCase().toCharArray();
// Shorting the array.
Arrays.sort(StringArray1);
Arrays.sort(StringArray2);
// Matching both array.
Status = Arrays.equals(StringArray1, StringArray2);
}
if (Status) {
System.out.println(Str_1 + " and " + Str_2 + " = Anagrams");
} else {
System.out.println(Str_1 + " and " + Str_2 + " = Anagrams");
}
}
public static void main(String[] args) {
MatchAnagram("Keep", "Peek");
MatchAnagram("Race", "Care");
}
}
우리는 이미 각 라인의 목적을 명령했습니다. 우리가 프로그램에서 따르는 주요 단계는 다음과 같습니다.
-
먼저 문장에서 모든 공백을 제거했습니다.
-
그런 다음 두 문장의 길이가 같은지 확인했습니다.
-
길이가 같으면 먼저 모든 문자를 소문자로 변환했습니다.
-
이제 우리는 이 두 문장의 모든 문자를 두 개의 서로 다른 배열로 가져와 배열을 정렬했습니다.
-
마지막으로 두 배열에 동일한 요소가 포함되어 있는지 확인했습니다.
-
일치하는 경우 두 문장 모두 아나그램입니다.
예제를 실행하면 콘솔에 아래와 같은 출력이 표시됩니다.
Keep and Peek = anagrams
Race and Care = anagrams
XOR을 사용하여 Java에서 아나그램 찾기
아래 예제에서는 비트XOR를 사용하여 Java에서 애너그램을 찾는 방법을 설명합니다. 코드는 다음과 같습니다.
public class JavaAnagram {
public static void main(String[] args) {
// Declaring two string
String STR_1 = "Race";
String STR_2 = "Care";
if (AnagramChecking(STR_1, STR_2))
System.out.println(STR_1 + " & " + STR_2 + " = Anagrams");
else
System.out.println(STR_1 + " & " + STR_2 + " = Not Anagrams");
}
public static boolean AnagramChecking(String STR_1, String STR_2) {
// Remove all white spaces, convert to lower case & character array
char[] StringArr1 = STR_1.replaceAll("\\s", "").toLowerCase().toCharArray();
char[] StringArr2 = STR_2.replaceAll("\\s", "").toLowerCase().toCharArray();
if (StringArr1.length != StringArr2.length) // Matching the length
return false;
int DoXOR = 0;
for (int i = 0; i < StringArr1.length; i++) // Performing XOR operation
{
DoXOR ^= StringArr1[i] ^ StringArr2[i];
}
return DoXOR == 0 ? true : false;
}
}
우리는 각 라인의 목적을 표시했습니다. 이제 예제 코드를 실행하면 콘솔에 아래와 같은 출력이 표시됩니다.
Race & Care = Anagrams
HashMap을 사용하여 Java에서 아나그램 찾기
아래 예제에서는 HashMap을 사용하여 Java에서 애너그램을 찾는 방법을 설명합니다. 코드는 다음과 같습니다.
// importing necessary packages
import java.util.HashMap;
public class JavaAnagram {
public static void main(String[] args) {
// Declaring two string
String STR_1 = "Race";
String STR_2 = "Care";
if (AnagramCheck(STR_1.toLowerCase(), STR_2.toLowerCase()))
System.out.println(STR_1 + " & " + STR_2 + " = Anagrams");
else
System.out.println(STR_1 + " & " + STR_2 + " = Not Anagrams");
}
public static boolean AnagramCheck(String STR_1, String STR_2) {
if (STR_1.length() != STR_2.length()) // Matching the length
return false;
HashMap<Character, Integer> MyMap = new HashMap<Character, Integer>(); // Declaring a hashmap
for (int i = 0; i < STR_1.length(); i++) {
char ch = STR_1.charAt(i);
if (MyMap.containsKey(ch))
MyMap.put(ch, MyMap.get(ch) + 1);
else
MyMap.put(ch, 1);
}
for (int i = 0; i < STR_2.length(); i++) {
char ch = STR_2.charAt(i);
if (MyMap.containsKey(ch)) {
if (MyMap.get(ch) == 1)
MyMap.remove(ch);
else
MyMap.put(ch, MyMap.get(ch) - 1);
} else
return false;
}
if (MyMap.size() > 0)
return false;
return true;
}
}
이제 예제 코드를 실행하면 콘솔에 아래와 같은 출력이 표시됩니다.
Race & Care = Anagrams
여기에서 공유되는 코드 예제는 Java로 되어 있으며 시스템에 Java가 포함되어 있지 않은 경우 환경에 Java를 설치해야 합니다.