코린이의 소소한 공부노트

[LeetCode/Easy] 409. Longest Palindrome 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 409. Longest Palindrome

무지맘 2023. 2. 19. 23:40

1. Input

1) String s

 

2. Output

1) s의 문자들로 만들 수 있는 palindrome 중 가장 긴 것의 길이를 반환

// palindrome은 앞에서 부터 읽으나 뒤에서 부터 읽으나 같은 문자열을 뜻한다.

 

3. Constraint

1) 1 <= s.length <= 2000

2) s는 영어 대소문자 중 몇개로 이루어져 있다.

3) palindrome은 대소문자를 구분한다.

 

4. Example

Input: s = "abccccdd" -> Output: 7 (dccaccd)

Input: s = "a" -> Output: 1 (a)

 

5. Code

1) 첫 코드(2023/02/19)

HashMap<Character,Integer> m = new HashMap<Character,Integer>();
for(int i=0 ; i<s.length() ; i++){
    if(m.containsKey(s.charAt(i))) m.put(s.charAt(i), m.get(s.charAt(i))+1);
    else m.put(s.charAt(i), 1);
}
 
int answer = 0;
boolean odd = false;
Iterator it = m.entrySet().iterator();
while(it.hasNext()){
    int i = (int)((Map.Entry)it.next()).getValue();
    if(i%2==0) answer+=i;
    else {
        odd = true;
        answer+=i-1;
    }
}
return odd ? answer+1 : answer;

- odd=true로 하는 것을 한번만 실행하게 바꾸고 싶었는데, 이렇다할 방법이 떠오르지 않았다.