算法day57|647,516

news2024/11/17 23:48:56

目录

647. 回文子串

516.最长回文子序列

动态规划总结篇


647. 回文子串

dp数组的定义

dp[i][j]代表的是区间[i,j]的字串是否为回文字符,如果dp[i][j]为true,否则为false

递推公式

如果s[i]和s[j]相等的话

1.i==j

为同一个字符,dp[i][j] = True

2 i与j相差1

dp[i][j] = True

3.i与j相差大于1

看一下前面的区间是不是true

dp[i-1][j-1] == True

如果不相等,那么return false

初始化

dp[i][j]== False

遍历顺序

因为需要在相等的第三种情况,需要判断里面的区间是不是回文。但是如果从上往下,从左往右遍历的话,会直接使用dp[i+1][j-1]未初始化的情况。所以我们不能那么遍历,所以我们需要从下往上,从左往右遍历

 

class Solution:
    def countSubstrings(self, s: str) -> int:
        #dp数组的定义,dp[i][j]
        dp = [[False] * len(s) for _ in range(len(s))]
        #初始化
        result = 0
        #遍历顺序,从下往上,从左往右
        for i in range(len(s)-1,-1,-1):
            for j in range(i,len(s)):
                #如果相等
                if s[i] == s[j]:
                    #i==j
                    if i == j:
                        result += 1
                        dp[i][j] = True
                    elif j-i == 1:
                        result += 1
                        dp[i][j] = True
                    else:
                        if dp[i+1][j-1]:
                            result += 1
                            dp[i][j] = True
        return result

代码随想录

516.最长回文子序列

dp数组的定义

dp[i][j]指的是字符串在[i,j]范围内最长回文子序列的长度是dp[i][j]

递归公式

如果s[i]和s[j]相同:

就要把长度+2,因为加入新的两个数

dp[i][j] = dp[i-1][j-1]+2

如果不相同:

那么把s[i]放进去

dp[i][j]= dp[i][j-1]

把s[j]放进去

dp[i][j]=  dp[i-1][j]

初始化

如果i==j的话,一定是等于1的

遍历顺序

从下到上,从左到右

打印dp

最后返回就看i,j区间内,最长的长度

647. 回文子串,求的是回文子串,而本题要求的是回文子序列, 大家要搞清楚两者之间的区别。

代码随想录

class Solution:
    def longestPalindromeSubseq(self, s: str) -> int:
        #dp数组的定义
        dp = [[0]*len(s) for _ in range(len(s))]
        for i in range(len(s)):
            dp[i][i] = 1
        for i in range(len(s)-1,-1,-1):
            for j in range(i+1,len(s)):
                #如果s[i]==s[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][-1]

动态规划总结篇

代码随想录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka大厂高频面试题:在保证高性能、高吞吐的同时保证高可用性

Kafka的消息传输保障机制非常直观。当producer向broker发送消息时,一旦这条消息被commit,由于副本机制(replication)的存在,它就不会丢失。但是如果producer发送数据给broker后,遇到的网络问题而造成通信中…

火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在精细化运营的时代,运营活动同样需要有精细化的策略,例如在年末大促活动中,设计 APP 弹窗提醒、满减、会员领券时,我…

C#语言实例源码系列-实现批量更改文件名称大小写或扩展名

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

DeepLearning_Note

这里写目录标题深度学习框架深度学习开发万能公式模型的网络设计和开发:激活函数:几个数据参数:神经网络的输出零碎知识点:深度学习框架 深度学习开发万能公式 ① 问题定义 ② Paddle.vision.datasets(内置数据集&am…

【ROS参数服务器】

参数服务器是以共享方式实现不同节点间数据交互的通信方式。主要用于存储多节点共享的数据,类似于全局变量。ROS中的参数服务器主要包含三个角色,分别是ROS Master(节点管理者)、Talker(参数设置者)、Listener(参数使用者),其中Talker和Liste…

创新京东T7开创“新算法宝典”,图文并茂,全新演绎,太酷了

导言 算法是一门学问,但却总遭到一些程序员的冷落。现在的开发人员,更热衷于编程语言的修炼,以应付面试需求时的需要,所以对算法的学习,稍许忽略了些。实际上,近些年来,各互联网公司对于算法的…

【知识梳理】前端路由的两种模式

一、概述 这是几年前写的的一篇文章,发在了简书上面,现在看来仍然有一些不足,所以再次整理一下发在掘金。 二、什么是单页面应用(SPA)? 首先我们需要了解一下前置的基础知识————SPA(单页面…

S3 #DooTrader 经典组冠军以良好盘感,创下近 900% 收益率摘得桂冠

本届 S3 #DooTrader 慈善杯全球交易大赛现已经进入白热化阶段,第二轮赛事冲刺在即,各位选手摩拳擦掌争取赢得最终的丰厚奖金。目前,领先的选手调整策略和仓位,以保持排位优势。我们看到现阶段经典组 TOP 1 选手已经创造了 1,300% …

WMS类图分析-android12

为什么要分析类图? WMS是一个复杂的模块,就像一个很大的家族,里面有各种角色,认识类图就像是认识WMS模块中的各个角色,不先把人认清楚了,怎么更好的理解他们之间的交互? 我觉得,这…

vue+antd搭建后台管理界面模版(PC端),适配中文、英文、日文 mock数据,开箱即用

vueantd搭建后台管理界面模版(PC端) 完整代码下载地址:vueantd搭建后台管理界面模版(PC端) 技术栈 vue2 vuex vue-router webpack ES6/7 axios antd 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vue…

【软件工程】实验4:校园二手物品交易过程的UI设计

文章目录校园二手物品交易过程的UI设计通过“用户画像”对用户群体进行分析校园二手物品交易过程UI设计(Figma)校园二手物品交易过程的UI设计 通过“用户画像”对用户群体进行分析 大学校园交易市场特点: 容量大。随着我国高等教育近年来的连…

Kubernetes部署_使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)

文章目录一、前言二、实际操作步骤1:编写namespace脚本步骤2:编写configmap脚本步骤3:编写secret脚本(用来存放mysql密码)步骤4:编写initContainer脚本步骤5:编写StorageClass相关脚本1)权限设置&#xff1…

干货分享 | To B业务的用户运营五要点

随着产业互联网格局的逐渐深化,近年来,To B业务逐渐被互联网改变和赋能。为了更高效地获客和服务,更多的运营手段逐渐被运用在To B业务之中,而To B运营也变得越来越重要。 作为一家To B企业,AdBright常常收到网友的提问…

YOLOV3论文学习

YOLOv3论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdf 综述 一、摘要 1、320*320的YOLOv3推理时间22ms,准确率28.2mAP,达到了SSD的精确度,推理速度却快了三倍。 2、基于.5mAp Iou 的YOLOv3的检测效果还比较不错&a…

Python使用Pandas导入数据库sql

Python使用Pandas导入数据库sql一、前言二、准备工作三、从数据库导入数据到Pandas一、前言 对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API Specification。Mysql,Oracal等特定数据库模块都遵从这一规范&…

QT 学习笔记(十一)

文章目录一、绘图设备1. QPixmap1.1 QPixmap 简介1.2 QPixmap 演示2. QBitmap2.1 QBitmap 简介2.2 QBitmap 演示见 QPixmap 和 QBitmap 的区别。3. QImage3.1 QImage 简介3.2 QImage 演示4. QPicture4.1 QPicture 简介4.2 QPicture 演示二、QPixmap 和 QBitmap 的区别1. widget…

Python正在消亡?致命弱点是否会让Python被新语言取代?

被业界称为“瑞士军刀”的编程语言,可能会被更适合该任务的其他语言取代吗? 自从1990年代初Python发布以来,它引起了很多热议。当然,编程社区花了至少20年的时间才逐渐注意到它的存在,而当它一旦开始流行起来&#xf…

Web入门开发【一】- Web开发介绍

欢迎来到霍大侠的小院,我们来学习Web入门开发的系列课程。 首先我们来了解下这个课程能学到什么? 1、你将可以掌握Web网站的开发全过程。 2、了解基础的HTML,CSS,JavaScript语言。 3、开发自己的第一个网站。 4、认识很多对编…

UML类关系

1、聚合关系(aggregation) 用空心菱形箭头表示,整体和部分有各自的生命周期。部分可以属于多个整体对象! class Student; class Class { private: Student s; public: void set_student(Student s) { this.s s; } }; student() { print(“c…

电脑商城网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 作为一个网上商城系统,就应该做到能提供强大的业务支持功能,系统能实现用户的注册功能、登录 功…