516. Longest Palindromic Subsequence
class Solution {
public:
int longestPalindromeSubseq(string s) {
int n = s.size();
vector<int> v0(n), v1(n, 1), v2(n);
vector<int> *i_2 = & v0, *i_1 = & v1, *i_ = & v2;
for (int len = 2; len <= n; len++) {
for (int i = 0; i + len <= n; i++)
i_->at(i) = s[i] == s[i + len - 1] ? 2 + i_2->at(i + 1) : max(i_1->at(i), i_1->at(i + 1));
swap(i_1, i_2);
swap(i_1, i_);
}
return i_1->at(0);
}
};