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

Leetcode 516.最长回文子序列

题意理解:

        给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。

        子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。

        回文理解为元素对称的字串,这里求字符串中最长的对称字串的长度。

        使用动态规划的思路来进行解题。

解题思路:

        (1)定义dp数组

                dp[i][j]表示从i到j的字串中最长回文序列的长度

        (2)递推公式

                当且仅当s[i]==s[j]

                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])

          (3)  初始化:一个元素是回文,所以dp[i][j],i==j时,值为1

          (4)由于dp[i][j]受dp[i+1][j-1]影响,所以,遍历顺序从左到右,从上到下

           最后返回dp[0][s.size-1]

1.动态规划解题

 public int longestPalindromeSubseq(String s) {int[][] dp=new int[s.length()][s.length()];for(int i=0;i<s.length();i++){Arrays.fill(dp[i],0);dp[i][i]=1;}for(int i=s.length()-1;i>=0;i--){for(int j=i+1;j<s.length();j++){if(s.charAt(i)==s.charAt(j)){dp[i][j]=dp[i+1][j-1]+2;}else{dp[i][j]=Math.max(Math.max(dp[i][j-1],dp[i+1][j]),dp[i+1][j-1]);}}}return dp[0][s.length()-1];}

2.复杂度分析

时间复杂度:O(n^2)

空间复杂度:O(n^2)

相关文章:

Leetcode 516.最长回文子序列

题意理解&#xff1a; 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 回文理解为元素对称的字串&#xff0c;这里…...

cool Node后端 中实现中间件的书写

1.需求 在node后端中&#xff0c;想实现一个专门鉴权的文件配置&#xff0c;可以这样来解释 就是 有些接口需要token调用接口&#xff0c;有些接口不需要使用token 调用 这期来详细说明一下 什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理&#xf…...

Leecode之面试题消失的数字

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 注意&#xff1a;本题相对书上原题稍作改动 示例 1&…...

STM32的三种下载方式

结果jlink&#xff0c;串口&#xff0c;stlink方式都没有问题&#xff0c;是当时缩减代码&#xff0c;看真正起作用的代码段有哪些&#xff0c;就把GPIO初始化中 /*开启GPIO外部时钟*/RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); 把开启外部时钟的代码注释掉了。…...

华为 huawei 交换机 接口 MAC 地址学习限制接入用户数量 配置示例

目录 组网需求: 配置思路&#xff1a; 操作步骤&#xff1a; 配置文件&#xff1a; 组网需求: 如 图 2-14 所示&#xff0c;用户网络 1 和用户网络 2 通过 LSW 与 Switch 相连&#xff0c; Switch 连接 LSW 的接口为GE0/0/1 。用户网络 1 和用户网络 2 分别属于 VLAN10 和 V…...

使用Python生成二维码的完整指南

无边落木萧萧下&#xff0c;不如跟着可莉一起游~ 可莉将这篇博客收录在了&#xff1a;《Python》 可莉推荐的优质博主首页&#xff1a;Kevin ’ s blog 本文将介绍如何使用Python中的qrcode库来生成二维码。通过简单的代码示例和详细解释&#xff0c;读者将学习如何在Python中轻…...

排序前言冒泡排序

目录 排序应用 常见的排序算法 BubbleSort冒泡排序 整体思路 图解分析 ​ 代码实现 每趟 写法1 写法2 代码NO1 代码NO2优化 时间复杂度 排序概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递…...

红队笔记Day3-->隧道上线不出网机器

昨天讲了通过代理的形式&#xff08;端口转发&#xff09;实现了上线不出网的机器&#xff0c;那么今天就来讲一下如何通过隧道上线不出网机器 目录 1.网络拓扑 2.开始做隧道&#xff1f;No&#xff01;&#xff01;&#xff01; 3.icmp隧道 4.HTTP隧道 5.SSH隧道 1.什么…...

C 练习实例70-求字符串长度

题目&#xff1a;写一个函数&#xff0c;求一个字符串的长度&#xff0c;在 main 函数中输入字符串&#xff0c;并输出其长度。 解答&#xff1a; #include <stdio.h> int length(char *s); int main() {int len;char str[20];printf("请输入字符串:\n");scan…...

HarmonyOS—@State装饰器:组件内状态

State装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI会发生对应的渲染改变。 在状态变量相关装饰器中&#xff0c;State是最基础的&#xff0c;使变量拥有状态属性的装饰器&a…...

Linux系统——防火墙拓展及重点理解

目录 一、iptables 1.基本语法 2.四表五链——重点记忆 2.1四表 2.2五链 2.3总结 3.iptables选项示例 3.1 -Z 清空流量计数 3.2 -P 修改默认规则 3.3 -D 删除规则 3.4 -R 指定编号替换规则 5.白名单 6.通用匹配 7.示例 7.1添加回环网卡 7.2可以访问端口 7.3 主…...

阿里云短信验证码的两个坑

其它都参照官网即可&#xff0c;其中有两个坑需要注意&#xff1a; 1、除去官网pom引用的包之外&#xff0c;还需要引用以下包&#xff1a; <dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifact…...

c入门第十五篇——学而时习之(阶段性总结)

古人说&#xff1a;“学而时习之。”古人又说&#xff1a;“温故而知新。”古人还说&#xff1a;“读书百遍&#xff0c;其义自见。” 总结一个道理那就是好书要反反复复的读&#xff0c;学习过的知识要时常去复习它&#xff0c;才有可能常读常新。 我&#xff1a;“师弟&…...

抽象的前端

问题背景&#xff1a;vue3&#xff0c;axios 直接导致问题&#xff1a;路由渲染失败 问题报错&#xff1a;Uncaught SyntaxError: The requested module /node_modules/.vite/deps/axios.js?v7bee3286 does not provide an export named post (at LoginIn.vue:16:9) 引入组…...

UPC训练赛二十/20240217

A:无穷力量 题目描述 2022年重庆突发山火让世界看到了中国一个又一个的感人事迹&#xff1a;战士们第一时间奔赴火场&#xff0c;志愿者们自发组成团队&#xff0c;为救火提供一切的可能的服务&#xff0c;人们自发输送物资&#xff0c;有的志愿者甚至几天几夜没有睡觉。每个…...

【51单片机】LCD1602(江科大)

1.LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:162个字符,每个字符为5*7点阵 2.引脚及应用电路 3.内部结构框图 屏幕: 字模库:类似于数码管的数…...

conda与pip的常用命令

conda的常用命令 1.查看conda版本 $ conda --version conda 23.11.02.查看conda的配置信息 $ conda infoactive environment : baseactive env location : /home/myPc/miniconda3shell level : 1user config file : /home/myPc/.condarcpopulated config files : conda vers…...

你知道什么是物联网MQTT么?

目录 你知道什么是物联网MQTT么&#xff1f;MQTT的基本概念MQTT的工作原理MQTT的应用场景MQTT的实例案例智能家居场景工业监控场景 你知道什么是物联网MQTT么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、基于发布/订阅模式…...

P8 pair vector

pair是一个模板类&#xff0c;用于表示一对值的组合&#xff0c;用<utility>中 pair模板有两个模板参数&#xff0c;t1 t2&#xff0c;分别表示第一个值和第二个值类型 pair类有两个成员变量&#xff0c;frist和 cond,分别表示第一个值与第二个值 还有一些成员函数和…...

奇异值分解(SVD)的应用——图像压缩

SVD方法是模型降阶的一类重要方法&#xff0c;本征正交分解&#xff08;POD&#xff09;和平衡截断&#xff08;BT&#xff09;都属于SVD类方法。 要想深入了解模型降阶技术&#xff0c;我们可以先从SVD的应用入手&#xff0c;做一个直观的了解。 1. SVD的定义和分类 我们想寻找…...

三维向量运算避坑指南:Python中常见的错误与解决方案

三维向量运算避坑指南&#xff1a;Python中常见的错误与解决方案 在计算机图形学、物理模拟和机器学习等领域&#xff0c;三维向量运算是基础中的基础。许多开发者在初次实现三维向量类时&#xff0c;往往会遇到各种看似简单却令人头疼的问题。从运算符重载的陷阱到类型处理的微…...

从CPU指令到C++代码:拆解 std::atomic fetch_add 在 x86 和 ARM 平台上的底层实现与性能差异

从CPU指令到C代码&#xff1a;拆解 std::atomic fetch_add 在 x86 和 ARM 平台上的底层实现与性能差异 在现代高性能并发编程中&#xff0c;原子操作是构建无锁数据结构和线程安全代码的基石。std::atomic 的 fetch_add 操作看似简单&#xff0c;但其底层实现却因硬件架构差异而…...

Python 官方下载页面(如 python.org/downloads/)的片段,列出了 Windows 平台下 Python 3.13.11

Python 官方下载页面&#xff08;如 python.org/downloads/&#xff09;的片段&#xff0c;列出了 Windows 平台下 Python 3.13.11&#xff08;发布于 2025 年 12 月 5 日&#xff09;的多种安装包选项。以下是各选项的简要说明&#xff1a; Windows installer (64-bit / 32-b…...

系统资源全景掌控:TaskExplorer如何重塑进程管理体验

系统资源全景掌控&#xff1a;TaskExplorer如何重塑进程管理体验 【免费下载链接】TaskExplorer Power full Task Manager 项目地址: https://gitcode.com/GitHub_Trending/ta/TaskExplorer 在数字化办公环境中&#xff0c;系统卡顿、资源占用异常、进程无响应等问题时常…...

如何用TradingAgents-CN打造你的AI投资顾问:5步构建智能交易系统

如何用TradingAgents-CN打造你的AI投资顾问&#xff1a;5步构建智能交易系统 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 作为一名有着十年投…...

绿盾加密环境下Keil安装避坑指南:从ST-LINK报错到安全模式切换

绿盾加密环境下Keil安装全流程解析&#xff1a;从驱动修复到开发环境优化 在嵌入式开发领域&#xff0c;Keil MDK作为ARM架构微控制器的主流开发工具&#xff0c;其稳定性直接关系到项目进度和开发体验。但当企业级文档加密系统"绿盾"介入后&#xff0c;原本顺畅的开…...

腾讯验证码攻防新篇:六宫格、滑块与文字识别的毫秒级破解实战

1. 腾讯验证码体系深度解析 腾讯验证码作为当前互联网安全防护的重要组成部分&#xff0c;已经发展出包括六宫格、图标点选、滑块验证和文字识别在内的多种形式。这些验证码在设计时充分考虑了人机交互的特点&#xff0c;通过视觉识别和行为分析双重机制来区分真实用户和自动化…...

手把手教你用ZPL指令在Zebra打印机上打印动态条码(附完整代码示例)

手把手教你用ZPL指令在Zebra打印机上打印动态条码&#xff08;附完整代码示例&#xff09; 在物流仓储、零售结算和智能制造场景中&#xff0c;自动生成并打印条码标签是提升作业效率的关键环节。Zebra打印机凭借其工业级稳定性和ZPL语言的高效指令集&#xff0c;成为行业标配…...

Docker 部署 Ollama 实战指南:从镜像拉取到 API 调用的全流程解析

1. 为什么选择 Docker 部署 Ollama&#xff1f; 在开始之前&#xff0c;我们先聊聊为什么要把 Ollama 装进 Docker。我刚开始接触大语言模型时&#xff0c;最头疼的就是环境配置问题。不同模型需要不同版本的依赖库&#xff0c;系统里各种 Python 环境经常打架。直到用了 Docke…...

别再手动测PLC了!用C# + Modbus Poll/Slave + VSPD三件套,5分钟搞定ModbusRTU通信仿真

工业自动化开发者的效率革命&#xff1a;C#与Modbus仿真工具链实战指南 在工业自动化领域&#xff0c;时间就是金钱。传统PLC调试过程中&#xff0c;工程师常常需要反复连接真实硬件设备&#xff0c;忍受着物理线路故障、设备资源占用和不可复现的测试环境等问题。这种低效的工…...