当前位置: 首页 > news >正文

LeetCode 解题思路 47(最长回文子串、最长公共子序列)

在这里插入图片描述

解题思路:

  1. dp 数组的含义: dp[i][j] 是否为回文子串。
  2. 递推公式: dp[i][j] = s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]。
  3. dp 数组初始化: 单字符 dp[i][i] = true,双字符 dp[i][i + 1] = s.charAt(i) == s.charAt(i + 1)。
  4. 遍历顺序: 从 3 开始遍历,寻找最长回文子串。
  5. 打印 dp 数组

Java代码:

public class Solution {public String longestPalindrome(String s) {int n = s.length();boolean[][] dp = new boolean[n][n];int maxLen = 1;int start = 0;for (int i = 0; i < n; i++) dp[i][i] = true;for (int i = 0; i < n - 1; i++) {if (s.charAt(i) == s.charAt(i + 1)) {dp[i][i + 1] = true;maxLen = 2;start = i;}}for (int len = 3; len <= n; len++) {for (int i = 0; i <= n - len; i++) {int j = i + len - 1;if (s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]) {dp[i][j] = true;maxLen = len;start = i;}}}return s.substring(start, start + maxLen);}
}

复杂度分析:

  • 时间复杂度: O(n²)。
  • 空间复杂度: O(1)。
    在这里插入图片描述

解题思路:

  1. dp 数组的含义: 长度为 [0, i - 1] 的字符串 text1 与长度为 [0, j - 1] 的字符串 text2 的最长公共子序列为 dp[i][j]。
  2. 递推公式:
if (text1[i - 1] == text2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;
} else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
  1. dp 数组初始化: dp[i][0] = 0,dp[0][j] = 0。
  2. 遍历顺序: 从小到大逐行遍历,确保左边和上边的 dp 数组有值。
  3. 打印 dp 数组

Java代码:

class Solution {public int longestCommonSubsequence(String text1, String text2) {int[][] dp = new int[text1.length() + 1][text2.length() + 1];for (int i = 1; i <= text1.length() ; i++) {char char1 = text1.charAt(i - 1);for (int j = 1; j <= text2.length(); j++) {char char2 = text2.charAt(j - 1);if (char1 == char2) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[text1.length()][text2.length()];}
}

复杂度分析:

  • 时间复杂度: O(mn),其中 m 和 n 分别为 text1 和 text2 的长度。
  • 空间复杂度: O(mn)。

相关文章:

  • 2025 SD省集总结
  • 数字化与信息化的关系
  • YOLOv12云端GPU谷歌免费版训练模型
  • C++ —— 可变参数
  • 1995-2022年全球经济自由度指数数据
  • 【Bootstrap V4系列】学习入门教程之 组件-表单(Forms)高级用法
  • 【软件设计师:存储】16.计算机存储系统
  • 代发考试战报:思科华为HCIP HCSE CCNP 考试通过
  • SpringAI特性
  • STC32G12K128-旋转编码器-软件去抖
  • 常用电阻阻值表E24(5%)和E96(1%)
  • 面试题:Java集合框架高频面试题总结
  • 【基础】模型上下文协议(Model Context Protocol, MCP)根本原理与工作机制详解
  • canoe的安装总结
  • 我的AD快捷键方案【留存】
  • JAVA多态——向上转型
  • Vmware 最新下载教程和安装教程,外带免下载文件
  • 【软件设计师:多媒体】14.多媒体技术及其应用
  • 【C/C++】C语⾔内存函数
  • 空间复杂度** 与 **所需辅助空间**
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 欧盟公布关税反制清单,瞄准美国飞机、汽车等产品
  • 105岁八路军老战士、抗美援朝老战士谭克煜逝世
  • 无人机穿越大理千年古塔落券洞内,涉事“飞手”被行拘10日
  • 读图|展现城市品格,上海城市影像走进南美
  • 西南大学教授、重庆健美运动奠基人之一李启圣逝世