250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code c++)Longest Palindromic Substring 본문
728x90
반응형
5. Longest Palindromic Substring
Given a string s, return the longest palindromic substring in s.
Example 1:
Input: s = "babad" Output: "bab" Note: "aba" is also a valid answer.
Example 2:
Input: s = "cbbd" Output: "bb"
Example 3:
Input: s = "a" Output: "a"
Example 4:
Input: s = "ac" Output: "a"
Constraints:
- 1 <= s.length <= 1000
- s consist of only digits and English letters (lower-case and/or upper-case),
주어진 s에서 가장 긴 팰린드롬을 찾아야 한다.
흔히 팰린드롬을 구하는 방법이다.
가운데에서 left, right를 비교해 나가는 방식이다.
class Solution {
public:
string longestPalindrome(string s) {
int size = s.size(), start = 0, end = 0;
if(size == 0){
return "";
}
for(int mid = 0; mid < s.size(); mid++){
int l1 = getLength(mid, mid, s);
int l2 = getLength(mid, mid + 1, s);
if(l1 > end - start){
start = mid - l1 / 2;
end = mid + l1 / 2;
}
if(l2 > end - start){
start = mid + 1 - l2 / 2;
end = mid + l2 / 2;
}
}
return s.substr(start, end - start + 1);
}
int getLength(int left, int right, string s){
int len = 0;
while(left >= 0 && right < s.size()){
if(s[left] == s[right]){
len = right - left + 1;
left--;
right++;
}
else{
break;
}
}
return len;
}
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code c++)ZigZag Conversion (0) | 2021.07.05 |
---|---|
(Leet Code c++)Reverse Integer (0) | 2021.07.05 |
(Leet Code c++)Median of Two Sorted Arrays (0) | 2021.07.01 |
(Leet Code c++)Longest Substring Without Repeating Characters (0) | 2021.07.01 |
(Leet Code c++)Add Two Numbers (0) | 2021.07.01 |