Advertisement
nikunjsoni

516

Jun 16th, 2021
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int longestPalindromeSubseq(string s) {
  4.         int n=s.length();
  5.         int dp[n][n];
  6.         memset(dp, 0, sizeof dp);
  7.        
  8.         // Case of 1 char.
  9.         for(int i=0; i<n; i++)
  10.             dp[i][i] = 1;
  11.  
  12.         // Case of 2+ chars.
  13.         for(int len=2; len<=n; len++){
  14.             for(int start=0; start<=n-len; start++){
  15.                 int end = start+len-1;
  16.                 if(s[start] == s[end])
  17.                     dp[start][end] = 2+dp[start+1][end-1];
  18.                 else
  19.                     dp[start][end] = max(dp[start+1][end], dp[start][end-1]);
  20.             }
  21.         }
  22.         return dp[0][n-1];
  23.     }
  24. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement