[HackerRank]-Java Anagrams
열한번 째 해커랭크 문제 기초이다.
Sample Input
anagram
margana
Sample Output
Anagrams
예시 설명
문자열 a, b 입력한다 두 문자열의 각 알파벳의 갯수가 일치하면 Anagrams 출력한다. 대소문자 구분 안한다.
코드
import java.util.Scanner;
public class Solution {
static boolean isAnagram(String a, String b) {
// Complete the function
a = a.toUpperCase();
b = b.toUpperCase();
char arr1[] = a.toCharArray();
char arr2[] = b.toCharArray();
char temp;
for(int i=0;i<arr1.length;i++){//char배열1 오름차순 정렬
for(int j=0;j<arr1.length;j++){
if(i != j){
if(arr1[i] < arr1[j]){
temp = arr1[j];
arr1[j] = arr1[i];
arr1[i] = temp;
}
}
else continue;
}
}
for(int i=0;i<arr2.length;i++){//char배열2 오름차순 정렬
for(int j=0;j<arr2.length;j++){
if(i != j){
if(arr2[i] < arr2[j]){
temp = arr2[j];
arr2[j] = arr2[i];
arr2[i] = temp;
}
}
else continue;
}
}
a = "";
b = "";
for(int i=0;i<arr1.length;i++){
a += arr1[i];
}
for(int i=0;i<arr2.length;i++){
b += arr2[i];
}
if(a.equals(b)) return true;
else return false;
}
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" );
}
}
설명
toCharArray()를 이용하 문자열을 문자배열로 나타내고 Arrays.sort()로 정렬하려했다. 근데 import가 더 안되었다. 그래서 일일히 문자 배열 정렬후 비교했다. 따로 함수만들어서 해도 됐지만 귀찮았다.
요약
toCharArray()는 string을 문자배열로 만들어준다. compareTo()는 문자열비교이다. 문자 비교는 (‘c’ > ‘b’)이런식으로 쉽게 하면된다.