Problem Solving/LeetCode
[LeetCode] C++ 5. Longest Palindromic Substring
LeeJaeJun
2024. 8. 2. 23:33
728x90
728x90
https://leetcode.com/problems/longest-palindromic-substring/description/
문제
문제 분석
- 문자열을 직접 잘라서 하나씩 조사하는 것보다 포인터를 두 개를 두어서 중심을 기준으로 늘려가는 것이 효율적이라고 판단하였다.
풀이
class Solution {
private:
string origin;
int length;
string expand(int left, int right){
while (left >= 0 && right < length && origin[left] == origin[right]){
left--;
right++;
}
return origin.substr(left + 1, right - left - 1);
}
public:
string longestPalindrome(string s) {
origin = s;
length = s.length();
string result = "";
string temp_1;
string temp_2;
if(length == 1){
return s;
}
for(int i = 0; i < length - 1; i++){
temp_1 = expand(i, i+1);
temp_2 = expand(i, i+2);
if (temp_1.length() >= temp_2.length()){
if(temp_1.length() >= result.length())
result = temp_1;
}else{
if(temp_2.length() >= result.length())
result = temp_2;
}
}
return result;
}
};
- 실수했었던 점: substr이 파이썬과 같이 범위들을 지정하는 것인줄 알았는데, (시작 위치, 개수)여서 제대로 된 결과를 얻디 못했었다.
728x90
300x250