
문제해석
소문자 혹은 대문자로 이루어진 문자열 s가 주어졌을 때 가장 긴 palindrome 문자열을 만들수 있는 길이를 반환
문자들은 대소문자를 구분한다 예를들어 "Aa"는 palindrome이 아니다.
정답 예
public int longestPalindrome(String s) {
int[] chars = new int[128];
// 각 character를 아스키코드로 저장 후 횟수를 기억
for (int i=0; i<s.length(); i++) {
chars[s.charAt(i)]++;
}
int longestPalindromeLength = 0;
int longestOdd = 0;
for (int i=0; i<chars.length; i++) {
// 문자열이 짝수 개 있는 경우 그대로 저장
if (chars[i]%2 == 0) {
longestPalindromeLength += chars[i];
} else {
// 가장 긴 홀수 문자 수 기억
longestOdd = chars[i];
// 홀수로 주어진 문자는 최대한의 짝수개 만큼만 사용
longestPalindromeLength += chars[i] - 1;
}
}
// 홀수 문자열이 하나라도 존재 하는 경우 가운데 위치시킬 홀 수 문자하나 더하기
if (longestOdd > 0) {
longestPalindromeLength++;
}
return longestPalindromeLength;
}'Algorithm' 카테고리의 다른 글
| [leetcode 75] 1. Two Sum (0) | 2023.02.28 |
|---|---|
| [leetcode 75] 438. Find All Anagrams in a String (0) | 2023.02.27 |
| [leetcode 75] 733. Flood Fill (0) | 2023.02.24 |
| [leetcode 75] 98. Validate Binary Search Tree (0) | 2023.02.24 |
| [leetcode 75] 102. Binary Tree Level Order Traversal (0) | 2023.02.22 |