[LeetCode]516. Longest Palindromic Subsequence

来源:互联网 发布:变声器软件哪个好 编辑:程序博客网 时间:2024/04/28 14:02

https://leetcode.com/problems/longest-palindromic-subsequence/#/description

找出字符串的最长回文子序列长度




DP,注意移动方向

public class Solution {    public int longestPalindromeSubseq(String s) {        if (s == null || s.length() == 0) {            return 0;        }        int[][] dp = new int[s.length()][s.length()];        for (int i = 0; i < s.length(); i++) {            dp[i][i] = 1;            // 要从最靠近结尾字符的位置向着远离结尾的位置移动            // 这样才能保证当前位置到结尾的状态已经是最新的            // 比如cbb,i = 2 & j = 0为起始位置j++的话,没法利用到已经是回文的bb子串            for (int j = i - 1; j >= 0; j--) {                if (s.charAt(i) == s.charAt(j)) {                    dp[j][i] = dp[j + 1][i - 1] + 2;                } else {                    dp[j][i] = Math.max(dp[j + 1][i], dp[j][i - 1]);                }            }        }        return dp[0][s.length() - 1];    }}


0 0
原创粉丝点击