博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 516. Longest Palindromic Subsequence
阅读量:4979 次
发布时间:2019-06-12

本文共 1766 字,大约阅读时间需要 5 分钟。

Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.

Example 1:

Input:

"bbbab"

Output:

4

One possible longest palindromic subsequence is "bbbb".

 

Example 2:

Input:

"cbbd"

Output:

2

One possible longest palindromic subsequence is "bb".

 

Similar Questions:   

Next challenges:   

 

 方法一:迭代。

思路:dp[i][j]表示的字符串i位置到j位置之间(包括i,j)含有的palindromic subsequence的数目,那么有如果s[i]==s[j],那么dp[i][j]=dp[i+1][j-1]+2;否则dp[i][j]=max(dp[i+1][j],dp[i][j-1])。具体实现的时候,应该先确定i和j位置之间(不包含i和j)的所有短字符串中的palindromic subsequence的数目,然后再求dp[i][j]。

 

代码:

1 public class Solution { 2     public int longestPalindromeSubseq(String s) { 3         int[][] dp = new int[s.length()][s.length()]; 4         for(int j = 0; j < s.length(); j++) { 5             dp[j][j] = 1; 6             for(int i = j - 1; i >= 0; i--) { 7                 if(s.charAt(i) == s.charAt(j)) dp[i][j] = dp[i + 1][j - 1] + 2; 8                 else dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]); 9             }10         }11         return dp[0][s.length() -1];12     }13 }

 

 

方法二:递归。

思路和方法一相同。

代码:

1 public class Solution { 2     public int longestPalindromeSubseq(String s) { 3         return helper(s, 0, s.length() - 1, new Integer[s.length()][s.length()]); 4     } 5      6     private int helper(String s, int i, int j, Integer[][] memo) { 7         if(memo[i][j] != null) return memo[i][j];//初始化Integer数组,所以数组中的每个元素是个类,如果类没有初始化就是null 8         if(i > j) return 0; 9         if(i == j) return 1;10         if(s.charAt(i) == s.charAt(j)) memo[i][j] = helper(s, i + 1, j - 1, memo) + 2;11         else memo[i][j] = Math.max(helper(s, i, j - 1, memo), helper(s, i + 1, j, memo));12         return memo[i][j];13     }14 }

 

转载于:https://www.cnblogs.com/Deribs4/p/7234393.html

你可能感兴趣的文章
CSS自学笔记(14):CSS3动画效果
查看>>
项目应用1
查看>>
基本SCTP套接字编程常用函数
查看>>
C 编译程序步骤
查看>>
[Git] 005 初识 Git 与 GitHub 之分支
查看>>
【自定义异常】
查看>>
pip install 后 importError no module named "*"
查看>>
springmvc跳转方式
查看>>
IOS 第三方管理库管理 CocoaPods
查看>>
背景色渐变(兼容各浏览器)
查看>>
MariaDB 和 MySQL 比较
查看>>
MYSQL: 1292 - Truncated incorrect DOUBLE value: '184B3C0A-C411-47F7-BE45-CE7C0818F420'
查看>>
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
查看>>
springMVC Controller 参数映射
查看>>
【bzoj题解】2186 莎拉公主的困惑
查看>>
Protocol Buffer学习笔记
查看>>
Update 语句
查看>>
软件工程-读书笔记(1-3章)
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
前端自动化测试之UI RECORDER(二、PC录制)
查看>>