JavaInterview JavaInterview
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)

『Java面试+Java学习』
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)
  • 指南
  • 简历

  • Java

  • 面试

  • 算法

  • algorithm
  • leetcode
JavaInterview.cn
2025-09-07
目录

1771. 由子序列构造的最长回文串的长度Java

文章发布较早,内容可能过时,阅读注意甄别。

# 题目

给你两个字符串 word1 和 word2 ,请你按下述方法构造一个字符串:

  • 从 word1 中选出某个 非空 子序列 subsequence1 。
  • 从 word2 中选出某个 非空 子序列 subsequence2 。
  • 连接两个子序列 subsequence1 + subsequence2 ,得到字符串。 返回可按上述方法构造的最长 回文串 的 长度 。如果无法构造回文串,返回 0 。

字符串 s 的一个 子序列 是通过从 s 中删除一些(也可能不删除)字符而不更改其余字符的顺序生成的字符串。

回文串 是正着读和反着读结果一致的字符串。

示例 1:

输入:word1 = "cacb", word2 = "cbba"
输出:5
解释:从 word1 中选出 "ab" ,从 word2 中选出 "cba" ,得到回文串 "abcba" 。

示例 2:

输入:word1 = "ab", word2 = "ab"
输出:3
解释:从 word1 中选出 "ab" ,从 word2 中选出 "a" ,得到回文串 "aba" 。

示例 3:

输入:word1 = "aa", word2 = "bb"
输出:0
解释:无法按题面所述方法构造回文串,所以返回 0 。

提示:

  • 1 <= word1.length, word2.length <= 1000
  • word1 和 word2 由小写英文字母组成

# 思路

简单的区间dp

# 解法

class Solution {
    public int longestPalindrome(String word1, String word2) {
        String word = word1 + word2;
        int n1 = word1.length(), n2 = word2.length(), n = n1 + n2, res = 0;
        int[][] dp = new int[n][n];
        for (int i = 0; i < n; i++) {
            dp[i][i] = 1;
        }
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < n-i; j++) {
                dp[j][j+i] = Math.max(dp[j+1][j+i], dp[j][j+i-1]);
                if (word.charAt(j) != word.charAt(j+i)) continue;
                dp[j][j+i] = Math.max((i == 1 ? 0 : dp[j+1][j+i-1]) + 2, dp[j][j+i]);
                if (j < n1 && j+i >= n1) res = Math.max(res, dp[j][j+i]);
            }
        }
        return res == 1 ? 0 : res;
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 总结

  • 分析出几种情况,然后分别对各个情况实现
微信 支付宝
#Java
最近更新
01
1686. 石子游戏VI Java
09-07
02
1687. 从仓库到码头运输箱子 Java
09-07
03
1688. 比赛中的配对次数 Java
09-07
更多文章>
Theme by Vdoing | Copyright © 2019-2025 JavaInterview.cn
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式