Leetcode 392 判断子序列

题意理解:

        给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

        字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace""abcde"的一个子序列,而"aec"不是)。

        即判断s和t是否存在一个最长公共子序列,且该最长公共子序列==s

        这里采用一个动态规划的思路求解最长公共子序列,其长度==s.size

解题思路:

        (1)   定义dp数组

        定义二维dp数组,dp[i][j]表示s第i个元素前,t第j个元素前最长公共子序列。

        i,j指示的是元素之间的位置

        其i属于[0,s.size+1],  j属于[0,t.size+1]

      (2)初始化

        dp[0][j]和dp[i][0]表示第一行第一列,其都是用一个空数组和一个非空数组求其最长公共给子序列,所以全部初始化为0.

        其余元素初始化为0,后续操作会被覆盖掉。

      (3)递推公式

        if(s[i-1]==t[j-1])  dp[i][j]=dp[i-1][j-1]+1

        else dp[i][j]=max(dp[i][j-1],dp[i-1][j])

        (4)返回

        if(dp[s.size-1][t.size-1]==s.size) return true;

        else return false;

1.动态规划

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

2.分析

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

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

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

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

相关文章

WebServer 之 http连接处理(上)

目录 &#x1f33c;基础知识 epoll HTTP 报文格式 HTTP 状态码 有限状态机 &#x1f319;http 处理流程 &#x1f40e;http 报文处理 &#x1f382;http类 &#x1f382;请求报文--接收 &#x1f40e;epoll 相关代码 &#x1f9dc;‍服务器接收 http 请求 &#x1f…

Qt 说明Q_PROPERTY的作用

在Qt框架中,Q_PROPERTY是一种宏,用于声明一个类的属性。Q_PROPERTY宏可以告诉Qt元对象系统(Meta-Object System)关于类的属性信息,比如属性的名称、类型、读写权限、通知信号等。这样可以让Qt的元对象系统能够对类的属性进行动态的查询和操作,比如在运行时动态获取和设置…

HTML快速入门教程

HTML&#xff1a;超文本标记语言&#xff08;Hyper Text Markup Language&#xff09;&#xff0c;是通过标签的形式将内容组织起来然后共享到网络之上供其他电脑访问查看。 大家可以思考一下&#xff0c;怎么将自己电脑上的文件或图片共享给其他电脑&#xff1f; 这时候会说通…

.target勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 网络安全威胁如勒索病毒已经成为企业和个人数据安全的重大挑战之一。.target勒索病毒作为其中的一种&#xff0c;以其高度复杂的加密算法和迅速变化的攻击手法备受关注。本文将深入介绍.target勒索病毒的特点&#xff0c;探讨如何有效地恢复被加密的数据文件…

【小记】MacOS Install golang

问题 - command not found: go ➜ brew install golang ➜ go version go version go1.21.7 darwin/arm64写在最后&#xff1a;若本文章对您有帮助&#xff0c;请点个赞啦 ٩(๑•̀ω•́๑)۶

关闭Windows系统自动更新的方法

关闭Windows系统自动更新的方法在不同版本的Windows中有所不同&#xff0c;以下是一些适用于不同Windows版本的步骤&#xff1a; Windows 10/11 方法一&#xff1a;通过“设置”关闭 打开“设置”&#xff08;可通过点击开始菜单或使用快捷键Win I&#xff09;。转到“更新和安…

【Visual Studio】使用空格替换制表符

环境 VS版本&#xff1a;VS2013 问题 如何生成空格替换制表符&#xff1f; 步骤 1、菜单 工具->选项&#xff0c;文本编辑器->C/C->制表符&#xff0c;选择【插入空格】。

[嵌入式系统-18]:RT-Thread -4- shell组件与常见命令

目录 一、RT-Thread shell组件 二、FinSH控制台 三、Shell组件提供了一些常用的命令集 一、RT-Thread shell组件 RT-Thread的Shell组件是一个命令行解析器和执行器&#xff0c;它提供了一个交互性的命令行界面&#xff0c;使用户能够通过输入命令来与嵌入式设备进行交互。 …

电容串联额定耐压问题

例如:两个电容器,其中电容C1 200uF,耐压UM1 100V;电容C2 50uF,耐压UM2500V。 &#xff08;1&#xff09;若将两电容串联使用,其等效电容和耐压各是多少? &#xff08;2&#xff09;若将两电容器并联使用,其等效电容和耐压各是多少? 分析&#xff1a; &#xff08;1&…

Ubuntu Desktop - Terminal 输出全部选中 + 复制

Ubuntu Desktop - Terminal 输出全部选中 复制 1. Terminal2. Terminal 最大化3. Edit -> Select All4. Copy & PasteReferences 1. Terminal 2. Terminal 最大化 3. Edit -> Select All 4. Copy & Paste Edit -> Copy or Shift Ctrl C Edit -> Paste…

深度理解实分析:超越公式与算法的学习方法

在数学的学习旅程中&#xff0c;微积分和线性代数为许多学生提供了直观且具体的入门体验。它们通常依赖于明确的公式、算法以及解题步骤&#xff0c;而这些元素往往可以通过记忆和机械练习来掌握。然而&#xff0c;当我们迈入实分析的领域时&#xff0c;我们面临着一种全新的挑…

【蓝桥杯单片机入门记录】认识单片机

目录 单片机硬件平台 单片机的发展过程 单片机开发板 单片机基础知识 电平 数字电路中只有两种电平&#xff1a;高和低 二进制&#xff08;8421码&#xff09; 十六进制 二进制数的逻辑运算 “与” “或” “异或” 标准C与C51 如何学好单片机 端正学习的态度、培…

最详细STM32 启动流程

一、STM32三种启动方式 常规模式&#xff08;主闪存存储器&#xff09;&#xff1a; 这是最常见的启动模式。在此模式下&#xff0c;处理器会执行复位向量表中的复位地址&#xff0c;从而启动芯片。芯片会执行各种初始化操作&#xff0c;包括时钟初始化、外设初始化等&#xff…

devc++跑酷游戏2.4.0

导航&#xff1a; Dev-c跑酷小游戏 1.0.0 devc跑酷小游戏1.2.5 devc跑酷游戏1.2.6 devc跑酷游戏2.0.0 devc跑酷游戏2.0.1 【更新内容&#xff08;废话&#xff09;】&#xff1a; 又更新了两关&#xff0c;用方格便利贴画地图真的超级方便 把z键的功能从重新开始刷新改…

Kubernetes 核心概念

一、什么是 Kubernetes 1、含义&#xff1a; Kubernetes 是一个自动化的容器编排平台&#xff0c;它负责应用的部署、应用的弹性以及应用的管理。 2、核心功能&#xff1a; (1) 调度&#xff1a; Kubernetes 的调度器可以把用户提交的容器放到 Kubernetes 管理的集群的某一…

BUGKU-WEB 社工-初步收集

题目描述 题目截图如下&#xff1a; 描述:其实是杂项&#xff0c;勉强算社工吧。来自当年实战 进入场景看看&#xff1a; 解题思路 做题先看源码关注可下载的资源(zip压缩包)抓包寻找可能存在的加密信息&#xff08;base64&#xff09;不管三七二十一先扫描目录再说 ps&…

【AI之路】使用RWKV-Runner启动大模型,彻底实现大模型自由

文章目录 前言一、RWKV-Runner是什么&#xff1f;RWKV-Runner是一个大语言模型的启动平台RWKV-Runner官方功能介绍 二、使用步骤1. 下载文件 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; ChatGPT的横空出世&#xff0c;打开了AI的大门&#xff…

Android---Jetpack Compose学习005

动画 1. 简单值动画 示例&#xff1a;背景颜色在紫色和绿色之间&#xff0c;以动画形式切换。使用 animateColorAsState() val backgroundColor by animateColorAsState(if (tabPage TabPage.Home) Purple100 else Green300) 该句代码中&#xff0c;有一个 backgroundColo…

HTTP基本概念-HTTP缓存技术

大家好我是苏麟 , 今天说说HTTP缓存技术 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP缓存技术 HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求&#xff0c;比如每次请求得到的数据都一样的&#xff0c;我们可以把这对「请求-响…

实验5-5 使用函数求素数和

本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 素数就是只能被1和自身整除的正整数。注意&#xff1a;1不是素数&#xff0c;2是素数。 函数接口定义&#xff1a; int prime( int p ); int PrimeSum( int m, int n ); 其中函数prime当用…