Algorithm
LeetCode 516. Longest Palindromic Subsequence
쿠케캬캬
2023. 4. 14. 20:50
반응형
https://leetcode.com/problems/longest-palindromic-subsequence/
Longest Palindromic Subsequence - LeetCode
Can you solve this real interview question? Longest Palindromic Subsequence - Given a string s, find the longest palindromic subsequence's length in s. A subsequence is a sequence that can be derived from another sequence by deleting some or no elements wi
leetcode.com
dp[i][j] = s[i]~s[j]에서의 Longest Palindromic Subsequence 최대 길이를 저장해줍니다.
s[i] == s[j] 라면, 새로운 2개의 문자는 palindrome이 되므로, dp[i][j] = dp[i + 1][j - 1] + 2.
그렇지 않다면, dp[i][j] = max(dp[i + 1][j], dp[i][j - 1])이 됩니다.
class Solution {
public:
int longestPalindromeSubseq(string s) {
int dp[1000][1000] = {0};
for(int i=s.size() - 1; i >= 0; i--) {
dp[i][i] = 1;
for(int j = i + 1; j < s.size(); j++) {
if(s[i] == s[j]) {
dp[i][j] = dp[i + 1][j - 1] + 2;
} else {
dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);
}
}
}
return dp[0][s.size() - 1];
}
};
반응형