Arrays and Strings - Palindrome Permutation

2019-08-30

회문 순열

회문
앞으로 읽으나 뒤로 읽으나 같은 단어 혹은 구절
순열
문자열을 재배치하는 것

회문 순열을 만족하기 위해서는 길이가 짝수일 경우 모든 문자의 개수가 반드시 짝수여야 하고, 길이가 홀수일 경우에는 문자 하나는 홀수 개 존재해도 괜찮다.

각 문자가 몇 번 등장했는지 센다.

int PalindromeofPermutation(String phrase) {
    int count = 0;
    int[] table = new int[Character.getNumericValue('z') - Character.getNumericValue('a') + 1];
    
    for (char c : phrase.toCharArray()) {
        int x = Character.getNumericValue(c)-Character.getNumericValue('a');  
        if( x != -1) {
            Table[x]++;
            
            if (table[x] % 2 ==1) {
                count++;
            }
            else {
                count--;
            }

        }
    }

    return count <=1;
}

알파벳 소문자로 이루어진 문자열을 훑어 홀수의 개수를 확인한다. count가 1과 같거나 0이면 회문 순열이고, 1보다 크다면 회문 순열이 아니다.