Advertisement
Guest User

Untitled

a guest
Oct 9th, 2021
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.77 KB | None | 0 0
  1. class Solution {
  2.  
  3.   public int longestPalindromeSubseq(String s) {
  4.     if (s == null || s.isEmpty()) {
  5.       return 0;
  6.     }
  7.    
  8.     int sLen = s.length();
  9.     int[][] dp = new int[sLen][sLen];
  10.    
  11.     // Build the table for Dynamic Programming
  12.     // Follow the formula, fill the table diagonally
  13.     for (int k = 0; k < sLen; k++) {
  14.       for (int i = 0; i < sLen; i++) {
  15.         int j = i + k;
  16.        
  17.         if (j >= sLen) {
  18.           continue;
  19.         }
  20.                
  21.         if (i == j) {
  22.           dp[i][j] = 1;
  23.         } else if (s.charAt(i) == s.charAt(j)) {
  24.           dp[i][j] = dp[i + 1][j - 1] + 2;
  25.         } else {
  26.           dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]);
  27.         }
  28.       }
  29.     }
  30.    
  31.     return dp[0][sLen - 1];
  32.   }
  33.  
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement