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

Day49 647 回文子串 516 最长回文子序列

647 回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

方法一:动态规划:

采用一个二维的dp数组,dp的含义是从i到j(闭区间)里的字符串是否是回文串。每次进行比较,如果i和j相等,相邻,或者只差一位,此时判断的这个肯定是回文子串,如果相差2以上,内层是回文串的话,外层肯定还是回文串:注意遍历顺序,由于递推公式的影响,得从左下到右上遍历:

class Solution {
public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result = 0;for (int i = s.size() - 1; i >= 0; i--) {  // 注意遍历顺序for (int j = i; j < s.size(); j++) {if (s[i] == s[j]) {if (j - i <= 1) { // 情况一 和 情况二result++;dp[i][j] = true;} else if (dp[i + 1][j - 1]) { // 情况三result++;dp[i][j] = true;}}}}return result;}
};

 方法二:双指针:

从内往外判断,从中心扩散到两边:

class Solution {
public:int countSubstrings(string s) {int result = 0;for (int i = 0; i < s.size(); i++) {result += extend(s, i, i, s.size()); // 以i为中心result += extend(s, i, i + 1, s.size()); // 以i和i+1为中心}return result;}int extend(const string& s, int i, int j, int n) {int res = 0;while (i >= 0 && j < n && s[i] == s[j]) {i--;j++;res++;}return res;}
};

516 最长回文子序列

给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。

示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bbbb"。

示例 2: 输入:"cbbd" 输出: 2 一个可能的最长回文子序列为 "bb"。

本题要看最长回文子序列,首先,dp数组里的值为i到j最长回文子序列的长度,递推公式要看i和j是否相等,相等的话就是里面的长度加上外面两个的长度(2),不相等的话就是分别算两个单的元素取大的,初始化时,注意要找到根基,也就是i和j相等的情况,此时初始化值为1,遍历顺序根据递推公式来看,也就是从左下往右上角遍历:

class Solution {
public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.size(), vector<int>(s.size(), 0));for (int i = 0; i < s.size(); i++) {dp[i][i] = 1;}for (int i = s.size() - 1; i >= 0; i--) {for (int j = i + 1; j < s.size(); 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][s.size() - 1];}
};

相关文章:

Day49 647 回文子串 516 最长回文子序列

647 回文子串 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视作不同的子串。 方法一&#xff1a;动态规划&#xff1a; 采用一个二维的dp数组&#xf…...

探秘GNU/Linux Shell:命令行的魔法世界

GNU/Linux的Shell是一种特殊的交互式工具&#xff0c;为用户提供了强大的控制和管理Linux系统的方式。在这个博客中&#xff0c;我们将深入了解Shell的基本概念、功能以及不同类型的Shell。 Shell的本质 Shell的核心是命令行提示符&#xff0c;它是用户与Linux系统进行交互的…...

基于STM32F407的coreJSON使用教程

目录 概述 工程建立 代码集成 函数介绍 使用示例 概述 coreJSON是FreeRTOS中的一个组件库&#xff0c;支持key查找的解析器&#xff0c;他只是一个解析器&#xff0c;不能生成json数据。同时严格执行 ECMA-404 JSON 标准。该库用 C 语言编写&#xff0c;设计符合 ISO C90…...

keepalived双主模式测试

文章目录 环境准备部署安装keepavlived配置启动测试模拟Nginx宕机重新启动问题分析 环境准备 测试一下keepalived的双主模式&#xff0c;所谓双主模式就是两个keepavlied节点各持有一个/组虚IP&#xff0c;默认情况下&#xff0c;二者互为主备&#xff0c;同时对外提供服务&am…...

微服务中的熔断、降级和限流

在现代微服务架构中,熔断、降级和限流是保障系统稳定性和可靠性的重要手段。本文将深入探讨这三种机制在微服务架构中的作用、原理以及实践方法。 1. 熔断(Circuit Breaker) 1.1 作用和原理 熔断器是一种可以在服务发生故障时快速中断请求的机制,防止故障蔓延到整个系统…...

2023年便宜的云服务器分享:最低26元4核16G

2024年阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…...

汽车零部件制造业MES系统解决方案

一、​汽车零部件行业现状 随着全球汽车产业不断升级&#xff0c;汽车零部件市场竞争日趋激烈&#xff0c;从上游的钢铁、塑料、橡胶等生产到下游的主机厂配套制造&#xff0c;均已成为全球各国汽车制造大佬战略目标调整的焦点&#xff0c;其意欲在汽车零部件行业快速开疆扩土&…...

区块链/加密币/敏感/特殊题材专供外媒发稿,英文多国语言海外新闻营销推广

【本篇由言同数字科技有限公司原创】敏感题材是海外媒体在报道过程中常遇到的难题&#xff0c;需要平衡新闻真实性、公正性与敏感性。本文将探讨海外媒体报道敏感题材所面临的挑战&#xff0c;并介绍如何抓住机遇提高报道质量。 第一部分&#xff1a;敏感题材报道的挑战 报道…...

初识Nginx

摘要&#xff1a;最近几个项目中的接口总是访问受限&#xff0c;需要后端同事配置Nginx代理&#xff0c;了解下Nginx后面自己配置。 Nginx 是一款高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点&#xff0c;常被用作静态资源服务、负载…...

Rust语言之多线程

文章目录 一、简介二、创建线程1.创建一个线程2.创建多个线程生成随机数尝试让程序睡一会儿引入多线程 三、线程返回值的处理1.每个线程处理一个独立的值2.多个线程处理一个值Arc&#xff08;原子引用计数&#xff09;Mutex&#xff08;互斥锁&#xff09;RwLock&#xff08;读…...

现有的通用模型中融入少量中文数据没有太大意义少量的数据就能影响整个大模型

相关链接&#xff1a;只修改一个关键参数&#xff0c;就会毁了整个百亿参数大模型&#xff1f; | 新程序员-CSDN博客 现象 1&#xff1a;mBERT 模型的跨语言迁移 现象 2&#xff1a;大语言模型同样存在显著的语言对齐 现象 3&#xff1a;知识与语言分离 现象 4&#xff1a;…...

vscode 开发代码片段插件

环境准备 node - 20v版本 &#xff0c;推荐使用nvm进行版本控制全局安装 "yo" 是 Yeoman 工具的命令行工具&#xff0c; npm i yo -g全局安装 generator-code 是一个 Yeoman 脚手架 gernerator-code npm i gernerator-code -g全局安装 npm install -g vsce官方文档 …...

算法竞赛STL:array的使用方法

算法竞赛STL&#xff1a;array的使用方法 文章目录 算法竞赛STL&#xff1a;array的使用方法array array 容器描述&#xff1a; array是一种固定大小的容器&#xff0c;它包含指定数量的元素。每个元素都有一个非负整数索引&#xff0c;用于访问或修改它。 使用方法&#xff…...

MyBatis sql拦截器实现一个自动根据租户进行分表的方案

需求描述&#xff1a; 在一个多租户系统中&#xff0c;通过 MyBatis 实现动态数据表分离。具体来说&#xff0c;您希望通过 MyBatis 拦截器在执行 SQL 时自动将表名根据当前租户 ID (tenantId) 进行修改。这样&#xff0c;每个租户的数据就可以存储在专属于它们的表中&#xf…...

TiDB in 2023, 一次简单的回顾丨PingCAP 唐刘

2023 年已经过去&#xff0c;TiDB 经过了一年的迭代&#xff0c;又往前进步了一点点&#xff0c;我们非常自豪的看到&#xff0c;TiDB 正在不断地帮助我们的客户成功&#xff0c;包括但不限于&#xff1a; ○ 首个云原生、分布式、全栈国产化银行核心业务系统投产上线丨TiDB …...

debug - 只要在内存中有显示相关的数据, 就会被CE找到

文章目录 debug - 只要在内存中有显示相关的实际数据, 就会被CE找到概述笔记demo实现demo运行效果用CE查找实际数据地址找到自己的调试点 - 方法1找到自己的调试点 - 方法2打补丁备注END debug - 只要在内存中有显示相关的实际数据, 就会被CE找到 概述 自己写了一个demo, 想验…...

Redis 单个与多节点如何实现分布式锁

分布式锁 在许多环境中&#xff0c;分布式锁是非常有用的原语&#xff0c;在这些环境中&#xff0c;不同的进程必须以互斥的方式操作共享资源。在应对并发问题时&#xff0c;Redis 客户端还可以通过加锁的方式&#xff0c;来控制并发写操作对共享数据的修改&#xff0c;从而保…...

频段划分学习射频知识的意义

一、射频电路设计与低频电路设计的不同点 随着频率提高&#xff0c;相应电磁波的波长与变得可与分立电路元件的尺寸相比拟时&#xff0c;电阻、电容和电感这些元件的电响应&#xff0c;将偏离他们的理想频率特性。以 WIFI 2.4G 频段为例&#xff0c;当频率为 2437MHz&#xff0…...

Effective Objective-C 学习(四)

掌握GCD及操作队列的使用时机 在执行后台任务时&#xff0c;GCD 并不一定是最佳方式。还有一种技术叫做 NSOperationQueue&#xff0c;它虽然与 GCD 不同&#xff0c;但是却与之相关&#xff0c;开发者可以把操作以 NSOperation 子类的形式放在队列中&#xff0c;而这些操作也…...

欢迎来到IT时代----盘点曾经爆火全网的计算机电影

计算机专业必看的几部电影 计算机专业必看的几部电影&#xff0c;就像一场精彩的编程盛宴&#xff01;《黑客帝国》让你穿越虚拟世界&#xff0c;感受高科技的魅力&#xff1b;《社交网络》揭示了互联网巨头的创业之路&#xff0c;《源代码》带你穿越时间解救世界&#xff0c;这…...

长期使用Taotoken Token Plan套餐的成本控制感受分享

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐的成本控制感受分享 1. 从按量计费到套餐订阅的转变 在开始使用Taotoken平台时&#xff0c;我们…...

QuantConnect Lean引擎架构深度剖析:构建模块化量化交易系统的技术实现

QuantConnect Lean引擎架构深度剖析&#xff1a;构建模块化量化交易系统的技术实现 【免费下载链接】Lean Lean Algorithmic Trading Engine by QuantConnect (Python, C#) 项目地址: https://gitcode.com/GitHub_Trending/le/Lean QuantConnect Lean引擎是一个开源的量…...

AI智能切片不是‘一键分割’就完事:批量口播视频的工程化切片陷阱与工具选型

Hook你是否试过把一小时口播音频丢进某款‘AI切片工具’&#xff0c;结果导出37条视频——其中12条开头卡在‘呃…’上&#xff0c;8条结尾截断在半句话里&#xff0c;还有5条字幕和画面完全不同步&#xff1f;更糟的是&#xff0c;换一批素材&#xff0c;模型表现又不稳定。这…...

Veo生成模糊/断帧/色偏?立刻停用默认设置!20年视频架构师紧急发布的5项必改Veo 2K/4K硬核配置

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Veo 2K/4K视频生成质量崩塌的根源诊断 当Veo模型在2K或4K分辨率下输出视频时&#xff0c;高频细节严重丢失、运动伪影显著增强、纹理结构模糊化&#xff0c;这一现象并非单纯算力不足所致&#xff0c;而…...

如何利用Taotoken模型广场为你的项目选择最合适的大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何利用Taotoken模型广场为你的项目选择最合适的大模型 当你的项目需要集成大模型能力时&#xff0c;面对市场上众多的模型提供商…...

麦嘉昕商城软件开发(模式介绍)

编辑&#xff1a;SJ520it黄华麦嘉昕商城软件开发麦嘉昕商城是一个综合性电商平台&#xff0c;涉及商品展示、交易、支付、物流等功能。开发此类系统需要前端、后端、数据库及第三方服务&#xff08;如支付、短信&#xff09;的集成。技术栈建议&#xff1a;前端&#xff1a;Vue…...

FlexNeRFer架构:动态精度MAC与稀疏计算优化解析

1. FlexNeRFer架构设计解析 1.1 多精度MAC单元设计原理 FlexNeRFer的核心创新在于其可动态调整精度的MAC&#xff08;乘加运算单元&#xff09;架构。传统固定精度MAC在面对NeRF这类需要混合精度计算的场景时&#xff0c;要么存在计算资源浪费&#xff08;高精度模式&#xff…...

2026营销策划岗位学数据分析能提升职场能力吗

一、数据分析在营销策划中的核心价值数据驱动决策取代经验主义&#xff0c;精准定位用户需求与行为模式 实时监测市场趋势与竞品动态&#xff0c;优化营销策略的敏捷性 量化评估活动效果&#xff0c;提升ROI与资源分配效率二、2026年营销策划岗位的数据分析技能需求基础能力&am…...

Windows热键冲突终极指南:如何用Hotkey Detective快速定位“键盘小偷“

Windows热键冲突终极指南&#xff1a;如何用Hotkey Detective快速定位"键盘小偷" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey…...

预训练模型技术演进史:从Word2Vec到多模态大模型

1. 项目概述&#xff1a;这本“沙滩读物”到底在讲什么&#xff1f; “Beach Reading: a Short History of Pre-Trained Models”——光看标题&#xff0c;你可能会以为这是本躺在夏威夷躺椅上、椰子水还没喝完就能翻完的轻松小册子。但别被“Beach Reading”这个温柔前缀骗了。…...