[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’)이런식으로 쉽게 하면된다.