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(n2)。
  • 空間復雜度: 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)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80307.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80307.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過管道實現C++ Linux獨立進程之間的通信和字符串傳遞

在Linux環境下&#xff0c;獨立進程之間的通信&#xff08;IPC&#xff09;可以通過多種方式實現&#xff0c;包括管道、消息隊列、共享內存和套接字。本文將詳細介紹如何使用管道&#xff08;pipe&#xff09;在C中實現獨立進程之間的通信&#xff0c;并傳遞字符串。 一、管道…

神經網絡極簡入門技術分享

1. 引言 神經網絡是深度學習的基礎&#xff0c;其設計靈感來源于人腦神經元的結構和工作方式。盡管現代神經網絡已經變得異常復雜&#xff0c;但其核心原理卻相對簡單易懂。本報告旨在通過剖析神經網絡的最基本單元——神經元&#xff0c;幫助初學者理解神經網絡的工作原理。 …

五、Hadoop集群部署:從零搭建三節點Hadoop環境(保姆級教程)

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月7日 專欄&#xff1a;Hadoop教程 前言&#xff1a; 想玩轉大數據&#xff0c;Hadoop集群是繞不開的一道坎。很多小伙伴一看到集群部署就頭大&#xff0c;各種配置、各種坑。別慌&#xff01;這篇教程就是你的“救生圈”。 …

科研項目管理:4款高效工具推薦與效率提升實踐

一般來說&#xff0c;科研項目往往涉及復雜的任務、跨部門協作以及嚴格的時間和預算限制。傳統的管理方式&#xff0c;如電子表格或郵件溝通&#xff0c;難以應對多任務并行、資源分配復雜的需求。借助現代項目管理工具&#xff0c;研究人員能夠優化工作流程、提升團隊協作效率…

如何統一修改word中所有英文字母的字體格式

1.需求分析 我想讓整篇論文中的所有英文字母格式都修改為Time New Roman格式。 2.直觀操作流程 點擊左上角開始 --> 點擊替換 --> 點擊更多 --> 點擊特殊格式 --> 選擇查找內容為任意字母(Y) --> 將光標點到替換內容 --> 點擊格式 --> 點擊字體 --> …

【疑難雜癥2025-003】Java-mvn項目在gitlab-ci構建鏡像時遇到的問題和解決方案

本文由Markdown語法編輯器編輯完成&#xff0e; 1.背景: 之前從同事手里接手了一個java的項目&#xff0c;是用maven構建項目的&#xff0e;由于我們的服務都是基于docker來部署的&#xff0c;因此這個java項目也是要編譯成docker image然后發布&#xff0e;但是之前一直都是…

【RT-Thread Studio】nor flash配置Fal分區

前置條件&#xff1a;【RT-Thread Studio】W25Q128配置 添加 FAL軟件包 配置SFUD驅動程序&#xff0c;使用FAL的設備為W25Q128 將fal_cfg.h和fal_flash_sfud_port.c提取出來&#xff0c;放到自己創建的fal_porting目錄。 修改 fal_flash_sfud_port.c struct fal_flash_dev n…

Spring MVC 視圖解析器 (ViewResolver) 如何配置? Spring Boot 是如何自動配置常見視圖解析器的?

我們來詳細分析一下視圖解析器 (ViewResolver) 的配置以及 Spring Boot 是如何自動配置它們的。 視圖解析器 (ViewResolver) 是什么&#xff1f; 在 Spring MVC 中&#xff0c;當控制器 (Controller) 方法處理完請求并返回一個邏輯視圖名 (String) 時&#xff0c;DispatcherS…

理解網站導航文件:robots.txt、sitemap.xml與LLMs.txt的全面解析

在當今數字化時代&#xff0c;網站不僅需要為人類用戶提供良好的瀏覽體驗&#xff0c;還需要考慮搜索引擎和人工智能系統的可訪問性。本文將深入探討三種關鍵的網站導航文件&#xff1a;傳統的robots.txt和sitemap.xml&#xff0c;以及新興的LLMs.txt&#xff0c;分析它們的功能…

leetcode 349. Intersection of Two Arrays

題目描述 題目限制0 < nums1[i], nums2[i] < 1000&#xff0c;所以可以開辟一個1001個元素的數組來做哈希表。 class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> table(1001,0…

【軟件工程】軟件多缺陷定位方法總結

軟件多缺陷定位(Multi-Fault Localization)是軟件工程中的一個重要研究方向,旨在同時定位代碼中存在的多個缺陷(Bug)。由于多個缺陷可能相互干擾(如掩蓋錯誤行為),導致傳統單缺陷定位方法效果下降,因此需要針對多缺陷場景的特殊性設計方法。以下是常見的多缺陷定位方法…

【數據結構入門訓練DAY-30】數的劃分

文章目錄 前言一、題目二、解題思路結語 前言 本次訓練內容 訓練DFS。訓練解題思維。 一、題目 將整數n分成k份&#xff0c;且每份不能為空&#xff0c;任意兩份不能相同(不考慮順序)。 例如&#xff1a;n7&#xff0c;k3&#xff0c;下面三種分法被認為是相同的。 {1&a…

OpenCV進階操作:圖像直方圖、直方圖均衡化

文章目錄 一、圖像直方圖二、圖像直方圖的作用三、使用matplotlib方法繪制直方圖2.使用opencv的方法繪制直方圖&#xff08;劃分16個小的子亮度區間&#xff09;3、繪制彩色圖像的直方圖 四、直方圖均衡化1、繪制原圖的直方圖2、繪制經過直方圖均衡化后的圖片的直方圖3、自適應…

Open CASCADE學習|Geom2d_BezierCurve 類

概述 Open CASCADE 提供了幾何建模的強大工具集,其中 Geom2d_BezierCurve 類用于表示二維貝塞爾曲線。貝塞爾曲線在計算機圖形學和計算機輔助設計(CAD)中具有廣泛應用,本文將詳細介紹 Geom2d_BezierCurve 類及其使用方法。 貝塞爾曲線簡介 貝塞爾曲線是一種參數曲線,廣泛…

muduo源碼解析

1.對類進行禁止拷貝 class noncopyable {public:noncopyable(const noncopyable&) delete;void operator(const noncopyable&) delete;protected:noncopyable() default;~noncopyable() default; }; 2.日志 使用枚舉定義日志等級 enum LogLevel{TRACE,DEBUG,IN…

互聯網大廠Java面試實錄:Spring Boot與微服務架構在電商場景中的應用解析

&#x1f4aa;&#x1f3fb; 1. Python基礎專欄&#xff0c;基礎知識一網打盡&#xff0c;9.9元買不了吃虧&#xff0c;買不了上當。 Python從入門到精通 &#x1f601; 2. 畢業設計專欄&#xff0c;畢業季咱們不慌忙&#xff0c;幾百款畢業設計等你選。 ?? 3. Python爬蟲專欄…

關于匯編語言與程序設計——單總線溫度采集與顯示的應用

一、實驗要求 (1)握碼管的使用方式 (2)掌握DS18B20溫度傳感器的工作原理 (3)掌握單總線通信方式實現 MCU與DS18B20數據傳輸 二、設計思路 1.整體思路 通過編寫數碼管顯示程序和單總線溫度采集程序&#xff0c;結合溫度傳感報警&#xff0c;利用手指觸碰傳感器&#xff0c;當…

用html+js+css實現的戰略小游戲

效果圖: 兄弟們&#xff0c;話不多說&#xff0c;直接上代碼 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

Navicat BI 數據分析功能上線 | 數據洞察新方法

Navicat 17.2 版本一經發布&#xff0c;便以 AI 助手賦能智能交互、Snowflake 支持拓展數據連接版圖、拓展對關系型、維度以及數據倉庫 2.0 建模方法的支持等新特性與功能抓住了用戶的目光&#xff0c;但其中一項低調且實用的更新 - 在 BI 數據預覽中深度集成數據分析工具&…

【ts】defineProps數組的類型聲明

第一種&#xff1a;使用Record<string, unknown> Record<string, unknown>表示一個對象&#xff0c;鍵是string類型&#xff0c;值是未知的 import { defineProps, PropType } from vue;const props defineProps({dataList: {type: Array as PropType<Record…