치악산 복숭아
[Leetcode] 409. Longest Palindrome - C++ 본문
풀이 (CPP)
- 접근 방법
- 팰린드롬을 이루는데에는 양쪽 끝에 위치할 같은 알파벳이 2개씩 필요함 + 한 가운데에는 알파벳 한개만 넣어도 됨
- ex) abcba
- 팰린드롬은 알파벳으로만 이루어져있으며, 대소문자를 구별한다.
- -> 아스키코드를 사용해서 카운팅해볼까?
- 정리: 아스키코드 A ~ z 의 길이(58)의 배열을 만들어서 주어진 문자열을 돌면서 각 인덱스의 문자가 등장하는 횟수를 저장하자!
- 짝수 번 등장했으면 result의 길이를 2씩 늘려주기 (양쪽 끝)
- 예제 문장을 한바퀴 다 돌고난 뒤 만약 1번만 나타난 문자가 있다면 result의 길이를 1 늘려주기 (가운데)
- 팰린드롬을 이루는데에는 양쪽 끝에 위치할 같은 알파벳이 2개씩 필요함 + 한 가운데에는 알파벳 한개만 넣어도 됨
- 구현 코드
class Solution {
public:
int longestPalindrome(string s) {
const int asciiLen = 58;
int result = 0;
int charCount[asciiLen];
for(int i = 0; i < s.length(); i++) {
int curr = s[i] - 65;
charCount[curr]++;
if(charCount[curr] == 2) {
result += 2;
charCount[curr] = 0;
}
}
for(int i = 0; i < asciiLen; i++) {
if(charCount[i] == 1) {
result +=1;
break;
}
}
return result;
}
};
다른 사람들의 답변을 보니 해시맵이나 해시테이블을 많이 썼던데 아직 나는 이 부분에 대한 이해가 부족해서 한번 직접 구현을 해봐야 알 것 같다. 🥹
'PS:0' 카테고리의 다른 글
[Leetcode] 20. Valid Parentheses - C++ (0) | 2025.02.02 |
---|---|
[Leetcode] 278. First Bad Version - C++ (0) | 2025.02.01 |
[프로그래머스] 로또의 최고 순위와 최저 순위 - Javascript, python (3) | 2021.12.08 |
[BOJ] 9012 괄호 - Python (0) | 2021.10.21 |
[프로그래머스] 카펫 - Python (0) | 2021.09.09 |
Comments