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

动态规划回文子串

647. 回文子串

方法:双指针

回文子串有长度为奇数和偶数两种,extend(s, i, i, n); extend(s, i, i + 1, n);就分别对应长度为奇数和偶数的情况

class Solution {
private:int extend(const string& s, int i, int j, int n) {int res = 0;while (i >= 0 && j < n && s[i] == s[j]) {++j;--i;++res;}return res;}
public:int countSubstrings(string s) {int n = s.size(), ans = 0;for (int i = 0; i < n; ++i) {ans += extend(s, i, i, n);ans += extend(s, i, i + 1, n);}return ans;}
};

$时间复杂度O(),空间复杂度O(n);

方法:dp

状态表示:以i为起始坐标到j为终止坐标的子字符串是否为回文的字符串的集合

属性:是与否

状态计算:当s[i] == s[j]时,分成两种情况。一种是j - i <= 1例如:aa与a都是回文字符串,另一种情况是j-i>1就得判断dp[i+1][j-1]是不是回文了。

状态依赖dp[i+1][j-1]这种状态,所以i的遍历就得倒过来,这样才能确保dp[i+1][j-1]已经判断是否为回文。

class Solution {
public:int countSubstrings(string s) {int n = s.size();vector<vector<bool>> dp(n, vector<bool> (n, false));int res = 0;for (int i = n - 1; i >= 0; --i) for (int j = i; j < n; ++j) {if (s[i] == s[j] && (j - i <= 1 || dp[i+1][j-1])) {++res;dp[i][j] = true;}}return res;}
};

$时间复杂度O(),空间复杂度O();

516. 最长回文子序列

方法:dp

状态表示:以i为起始坐标到j为终止坐标的子字符串最长回文的字符串的长度

属性::长度

预处理长度为1的回文子序列

状态计算:当s[i] == s[j]时,dp[i][j] == dp[i+1][j-1] + 2(为一的情况已经预处理)

不相同时则取dp[i+1][j],与dp[i][j-1]中的大值;

与上一题一样遍历顺序是从下到上从左到右

class Solution {#define maxn 1010int dp[maxn][maxn];
public:int longestPalindromeSubseq(string s) {int n = s.size();for (int i = 0; i < n; ++i) dp[i][i] = 1;for (int i = n - 1; i >= 0; --i) for (int j = i + 1; j < n; ++j) {if (s[i] == s[j]) dp[i][j] = dp[i+1][j-1] + 2;else dp[i][j] = max(dp[i+1][j], dp[i][j-1]);}return dp[0][n-1];}
};

$时间复杂度O(),空间复杂度O();

相关文章:

动态规划回文子串

647. 回文子串方法&#xff1a;双指针回文子串有长度为奇数和偶数两种&#xff0c;extend(s, i, i, n); extend(s, i, i 1, n);就分别对应长度为奇数和偶数的情况class Solution { private:int extend(const string& s, int i, int j, int n) {int res 0;while (i > 0…...

windows 域控提权CVE-2014-6324CVE-2020-1472CVE-2021-42287CVE-2022-26923

一、CVE-2014-6324复现 环境&#xff1a;god.org域&#xff0c;两台主机&#xff0c;一台win2008域控&#xff0c;另一台web服务器win2008 工具&#xff1a;ms14-068.exe(漏洞exp) mimikatz psexec 利用条件&#xff1a; 1.域用户账号密码 2.获得一台主机权限(本地administ…...

1、JDK 安装 Java环境变量配置

jdk下载&#xff08;Java8&#xff09; &#xff08;下载时间不同&#xff0c;小版本号会有变化&#xff0c;不影响后续安装&#xff09; 官网下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8-windows 下载完后安装 JDK 环境变量配置 Win…...

[c++]list模拟实现

目录 前言&#xff1a; 学习类的方式&#xff1a; 1 类成员变量 1.1 list成员变量 1.2 结点结构体变量 1.3 迭代器成员变量 2 默认函数——构造 2.1 结点结构体构造函数 2.2 list构造函数 2.3 迭代器构造函数 3 迭代器实现 3.1 list部分 3.2 迭代器结构体部分 3.2…...

实用的仓库管理软件有哪些,盘点2023年5大仓库管理软件!

对于做批发生意的老板或工厂老板来说&#xff0c;选择一款实用的仓库管理软件是至关重要的。仓库管理软件除了可以帮你降低仓库管理成本&#xff0c;提高经营管理的效率&#xff0c;还能够在手机上随时随地掌控仓库员工和商品的最新信息&#xff0c;与客户、供应商的订单情况能…...

(八十二)透彻研究通过explain命令得到的SQL执行计划(1)

今天我们正式进入研究explain命令得到的SQL执行计划的内容了&#xff0c;只要把explain分析得到的SQL执行计划都研究透彻&#xff0c;完全能看懂&#xff0c;知道每个执行计划在底层是怎么执行的&#xff0c;那么后面学习SQL语句的调优就非常容易了。 首先&#xff0c;我们现在…...

【Linux】旋转锁 | 读写锁

在之前的线程学习中&#xff0c;用到的锁都是挂起等待锁&#xff0c;如果申请不到锁&#xff0c;那就会在锁中等待&#xff1b; 自旋锁则不大相似 文章目录1.自旋锁1.1 概念1.2 接口1.2.1 pthread_spin_init/destroy1.2.2 pthread_spin_lock1.2.3 pthread_spin_unlock2.读写锁…...

EasyExcell导出excel添加水印

EasyExcell导出excel添加水印1、添加easyExcel相关依赖2、准备基础工具类3、创建水印handler类4、创建单元测试类WriteTest.class5、测试结果1、添加easyExcel相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId&…...

SpringCloud:Nacos配置管理

Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我们需要一种统一配置管理方案&#xff0c;可以集中管理…...

正则表达式引擎NFA自动机的回溯解决方案总结

前几天线上一个项目监控信息突然报告异常&#xff0c;上到机器上后查看相关资源的使用情况&#xff0c;发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具&#xff0c;我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法&#…...

卷积神经网络之AlexNet

目录概述AlexNet特点激活函数sigmoid激活函数ReLu激活函数数据增强层叠池化局部相应归一化DropoutAlexnet网络结构网络结构分析AlexNet各层参数及其数量模型框架形状结构关于数据集训练学习keras代码示例概述 由于受到计算机性能的影响&#xff0c;虽然LeNet在图像分类中取得了…...

React中setState什么时候是同步的,什么时候是异步的?

本文内容均针对于18.x以下版本 setState 到底是同步还是异步&#xff1f;很多人可能都有这种经历&#xff0c;面试的时候面试官给了你一段代码&#xff0c;让你说出输出的内容&#xff0c;比如这样&#xff1a; constructor(props) {super(props);this.state {val: 0}}compo…...

优秀开源软件的类,都是怎么命名的?

日常编码中&#xff0c;代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图&#xff0c;也是一项必备的能力。 Java项目的代码结构&#xff0c;能够体现它的设计理念。Java采用长命名的方式来规范类的命名&#xff0c;能够自己表达它的主要意图。配合高级的 IDEA&…...

绘制CSP的patterns矩阵图

最近在使用FBCSP处理数据,然后就想着看看处理后的样子,用地形图的形式表现出来,但是没有符合自己需求的函数可以实现,就自己尝试的实现了一下,这里记录一下,方便以后查阅。 绘制CSP的patterns矩阵图 对数据做了FBCSP处理,但是想画一下CSP计算出来的patterns的地形图,并…...

Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)

系列文章目录 datatable 自定义筛选按钮的解决方案Echarts实战案例代码(21)&#xff1a;front-endPage的CJJTable前端分页插件ajax分页异步加载数据的解决方案 文章目录系列文章目录前言一、html容器构建1.操作按钮2.表格构建二、时间日期计算三、dataTables属性配置1.调用2.过…...

Python decimal模块的使用

Python decimal 模块Python中的浮点数默认精度是15位。Decimal对象可以表示任意精度的浮点数。getcontext函数用于获取当前的context环境&#xff0c;可以设置精度、舍入模式等参数。#在context中设置小数的精度 decimal.getcontext().prec 100通过字符串初始化Decimal类型的变…...

pycharm常用快捷键

编辑类&#xff1a; Ctrl D 复制选定的区域或行 Ctrl Y 删除选定的行 Ctrl Alt L 代码格式化 Ctrl Alt O 优化导入&#xff08;去掉用不到的包导入&#xff09; Ctrl 鼠标 简介/进入代码定义 Ctrl / 行注释 、取消注释 Ctrl 左方括号 快速跳到代码开头 Ctrl 右方括…...

useCallback 与 useMemo 的区别 作用

useCallback 缓存钩子函数&#xff0c;useMemo 缓存返回值&#xff08;计算结果&#xff09;。 TS声明如下&#xff1a;type DependencyList ReadonlyArray<any>;function useCallback<T extends (...args: any[]) > any>(callback: T, deps: DependencyList)…...

Mybatis的学习

01-mybatis传统dao开发模式 概述 mybatis有两种使用模式: ①传统dao开发模式, ②dao接口代理开发模式 ①传统dao开发模式 dao接口 dao实现子类 mapper映射文件dao实现子类来决定了dao接口的方法和mapper映射文件的statement的关系 代码实现 public class StudentDaoImpl im…...

PyTorch深度学习实战 | 计算机视觉

深度学习领域技术的飞速发展&#xff0c;给人们的生活带来了很大改变。例如&#xff0c;智能语音助手能够与人类无障碍地沟通&#xff0c;甚至在视频通话时可以提供实时翻译&#xff1b;将手机摄像头聚焦在某个物体上&#xff0c;该物体的相关信息就会被迅速地反馈给使用者&…...

人脸模糊实战指南:YOLOv8+SAM三重模糊工业级方案

1. 项目概述&#xff1a;为什么一张脸的模糊处理&#xff0c;比你想象中更难也更重要我做图像隐私处理相关项目快八年了&#xff0c;从最早用Photoshop手动框选、拖拽高斯模糊图层&#xff0c;到后来写脚本调OpenCV的Haar级联检测器&#xff0c;再到如今用YOLOv8SAM组合做像素级…...

AI时代算力、模型与安全的三角博弈:从Nvidia生态到工程实践

1. 项目概述&#xff1a;当算力、智能与安全交织的时代最近和几个在芯片设计、大模型应用以及安全服务公司工作的朋友聊天&#xff0c;大家不约而同地都聊到了一个话题&#xff1a;我们正处在一个由Nvidia芯片驱动的AI浪潮之巅&#xff0c;但这场盛宴似乎并非没有天花板。一方面…...

SLV:用AI对话驱动Solana节点部署与运维的革命性工具

1. 项目概述&#xff1a;SLV&#xff0c;一个为Solana节点管理注入AI灵魂的工具如果你在Solana生态里跑过验证器节点或者搭建过RPC服务&#xff0c;那你一定对下面这套流程不陌生&#xff1a;找一台靠谱的服务器&#xff0c;手动SSH连上去&#xff0c;一行行敲命令安装依赖、编…...

高校vs中小学气象站:核心区别

绝大多数普通校园气象站仅适合中小学可视化科普展示&#xff0c;数据精度低、无原始数据导出、无开放接口、参数单一&#xff0c;完全无法满足高校教学科研需求。中小学设备&#xff1a;侧重外观展示、简单数据观看、趣味科普&#xff0c;精度普通、数据封闭、无科研溯源能力&a…...

抖音无水印下载神器:3分钟实现高效批量下载的完整指南

抖音无水印下载神器&#xff1a;3分钟实现高效批量下载的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...

Namespace 为什么不够用了:容器逃逸的技术原理与真实攻击链

Namespace 为什么不够用了&#xff1a;容器逃逸的技术原理与真实攻击链 一、共享内核的致命假设 Docker 容器的核心隔离机制是 Linux Namespace cgroups。Namespace 让进程误以为自己独占 PID、网络和文件系统&#xff0c;cgroups 限制 CPU、内存、IO 的使用上限。这套机制将部…...

冥想第一千八百七十八天(1878)

1.周二&#xff0c;5.12日&#xff0c;天气晴朗&#xff0c;下午阴&#xff0c;项目上全力以赴的一天。今天是休息日&#xff0c;下班带溪溪去游泳。 2.感谢父母&#xff0c;感谢朋友&#xff0c;感谢家人&#xff0c;感谢不断进步的自己。...

告别信号失真!手把手教你理解5G基站RRU里的DPD黑科技(附FPGA实现思路)

告别信号失真&#xff01;手把手教你理解5G基站RRU里的DPD黑科技&#xff08;附FPGA实现思路&#xff09; 在5G基站射频单元&#xff08;RRU&#xff09;的调试现场&#xff0c;工程师们最常遇到的"拦路虎"之一就是功率放大器&#xff08;PA&#xff09;的非线性失真…...

3款实用论文降重神器,帮你轻松解决重复率难题

对于正在撰写毕业论文或者期刊论文的创作者来说&#xff0c;重复率不达标绝对是最头疼的问题之一。自己手动改了三五遍&#xff0c;重复率还是卡在要求线以上&#xff0c;不仅耽误时间还影响心态&#xff0c;这时候一款好用的降重工具就能帮你省下不少精力。今天我们就以第三方…...

2026 年全球网络安全威胁态势与关键技术防御研究

摘要 本文基于 Security Affairs 2026 年第 576 期安全通讯披露的最新网络攻击事件与漏洞情报&#xff0c;系统分析 Linux 无文件远控、内核提权、AI 供应链投毒、钓鱼攻击工业化、关键信息基础设施入侵等新型威胁的技术机理、传播路径与危害特征。研究结合 Quasar Linux RAT、…...