PS

코딩 인터뷰 완전 분석 1.4 회문 순열

Bryan Lee 2022. 4. 11. 22:56

문제 이해

- 문자열이 회문의 순열인지 아닌지를 판단하라

 

해결 전략

- 배열을 이용해서 문자열의 각 문자의 개수를 저장한다.

- 회문의 순열이기 위해서는 홀수인 문자의 개수가 없거나, 하나만 존재해야 한다. 

 

구현

import java.util.*;
public class Main {	
	public boolean solution(String s){
	
	   int[] arr = new int[30];
	   int oddCnt = 0; 
	   
	   s = s.toLowerCase();
	   
	   for(int i=0; i<s.length(); i++){
	       int pos = s.charAt(i)-97;
	       if(0<=pos && pos<=25){
	          arr[pos] += 1;
	       }
	   }
	   
	   for(int i=0; i<=25; i++){
	       if(arr[i] % 2 == 1){
	           oddCnt += 1;
	       }
	   }
	   
	   if(oddCnt <= 1){
	       return true;
	   }else{
	       return false;
	   }
	   
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.nextLine();
		System.out.println(T.solution(str));
	}
}

피드백

- 회문의 성립 조건을 잘 생각해야 한다.