๐ŸŒ— 516. ๆœ€้•ฟๅ›žๆ–‡ๅญๅบๅˆ—

ๅžไฝ›็ซฅๅญ2022ๅนด6ๆœˆ9ๆ—ฅๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ— 516. ๆœ€้•ฟๅ›žๆ–‡ๅญๅบๅˆ—

้šพๅบฆ: ๐ŸŒ—

้—ฎ้ข˜ๆ่ฟฐ

img_31.png


่งฃๆณ•

class Solution {
    public int longestPalindromeSubseq(String s) {
        // ๆ€่ทฏ๏ผš
        // dp[i][j] = dp[i + 1][j - 1] + 2
        // dp[i][j] = max(dp[i + 1][j], dp[i][j - 1], dp[i + 1][j - 1])
        int len = s.length();
        int[][] dp = new int[len][len];
        // ๅˆๅง‹ๅŒ–
        // dp
        for(int i = len - 1; i >= 0; i --) {
            for(int j = i; j < len; j ++) {
                if(i == j) {
                    dp[i][j] = 1;
                } else if(i == j - 1) {
                    if(s.charAt(i) == s.charAt(j)) {
                        dp[i][j] = 2;
                    } else {
                        dp[i][j] = 1;
                    }
                } else {
                    if(s.charAt(i) == s.charAt(j)) {
                        dp[i][j] = dp[i + 1][j - 1] + 2;
                    } else {
                        dp[i][j] = Math.max(dp[i + 1][j], Math.max(dp[i][j - 1], dp[i + 1][j - 1]));
                    }
                }
            }
        }
        return dp[0][len - 1];
    }
}

่พ“ๅ‡บ

img_30.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/6/20 ไธ‹ๅˆ8:24:47
่ดก็Œฎ่€…: liuxianzhishou