leetcode(리트코드)5-Longest Palindromic Substring
leetcode(리트코드)5-Longest Palindromic Substring
leetcode 5 - Longest Palindromic Substring 문제입니다.
1. 문제
https://leetcode.com/problems/longest-palindromic-substring/
2. Input , Output
3. 분류 및 난이도
Medium 난이도 문제입니다.
leetcode Top 100 Liked의 문제입니다.
4. 문제 해석
- 부분 문자열의 회문을 찾는데 가장 길이가 긴 것을 찾아 리턴합니다.
- 어려워서 discuss를 봤습니다.
5. code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
public:
string longestPalindrome(string s) {
//사이즈가 작은게 들어오면
if (s.size()<=1)
return s;
int min_left=0;
int max_len=1;
int max_right=s.size()-1;
//인덱스 mid를 기준으로 양쪽으로 검사를 한다.
for (int mid=0;mid<s.size();){
int left=mid;
int right=mid;
//right는 오른쪽으로 가면서 검사하는데 +1과 같으면 오른쪽으로 이동해서 max_len값을 늘린다. 같으면 어쨋든 palindromic이다.
while (right<max_right && s[right+1]==s[right])
right++; // Skip duplicate characters in the middle
//right로만으 일단 palindromic을 구했으므로 다음 루프때는 그보다 1 큰값에서 루프를 돌게 한다.
mid=right+1; //for next iter
//왼쪽으로 이동하면서 검사한다.
while (right<max_right && left>0 && s[right+1]==s[left-1]){
right++;
left--;
} // Expand the selection as long it is a palindrom
int new_len=right-left+1; //record best palindro
cout<<new_len<<"\n";
if (new_len>max_len){
min_left=left;
max_len=new_len;
}
}
return s.substr(min_left, max_len);
}
};
6. 결과 및 후기, 개선점
discuss를 봤으므로 올리지 않습니다.
This post is licensed under CC BY 4.0 by the author.