【算法专栏学习】成贤学院,程序员的福利站到了,判断子序列,经典算法实战。

news2025/2/25 21:01:53

在这里插入图片描述

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。

🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。

🎉欢迎 👍点赞✍评论⭐收藏

在这里插入图片描述

🔎 算法领域知识 🔎

链接专栏
分发糖果算法专栏
买卖股票的最佳时机算法专栏
跳跃游戏算法专栏
H 指数算法专栏
除自身以外数组的乘积算法专栏
加油站算法专栏
接雨水算法专栏
反转字符串中的单词算法专栏
删除有序数组中的重复项 II算法专栏
轮转数组算法专栏
验证回文串算法专栏
判断子序列算法专栏

经典算法题 之 判断子序列

在这里插入图片描述

题目如下:

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

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

示例 1:

输入:s = "abc", t = "ahbgdc"
输出:true

示例 2:

输入:s = "axc", t = "ahbgdc"
输出:false

提示:

  • 0 <= s.length <= 100
  • 0 <= t.length <= 10^4
  • 两个字符串都只由小写字符组成。

实现逻辑:

  1. 定义两个指针 sIndextIndex,分别指向字符串 st 的起始位置。
  2. 使用 while 循环,当 sIndextIndex 都没有越界时进行比较。
  3. 如果 s.charAt(sIndex) 等于 t.charAt(tIndex),说明 s 的当前字符是 t 的一个子序列字符,将 sIndextIndex 都向后移动一位。
  4. 如果不相等,只将 tIndex 向后移动一位。
  5. sIndex 越界时,说明 s 的所有字符都在 t 中找到了,返回 true
  6. tIndex 越界时,说明 t 已经遍历完了,但 s 还有字符没判断完,返回 false

Java代码实现:

public static boolean isSubsequence(String s, String t) {
    int sIndex = 0;
    int tIndex = 0;
    
    while (sIndex < s.length() && tIndex < t.length()) {
        if (s.charAt(sIndex) == t.charAt(tIndex)) {
            sIndex++;
        }
        tIndex++;
    }
    
    return sIndex == s.length();
}

public static void main(String[] args) {
    String s = "abc";
    String t = "ahbgdc";
    boolean result = isSubsequence(s, t);
    System.out.println(result ? "s 是 t 的子序列" : "s 不是 t 的子序列");
}

执行过程:

在 main 方法中,我们定义了两个示例字符串 st,然后调用 isSubsequence 方法判断 s 是否是 t 的子序列。最后,在控制台打印出结果。

执行结果:

s 是 t 的子序列

这代表字符串 "abc" 是字符串 "ahbgdc" 的子序列。

🏆关注作者,普修罗双战士,给你不一样的技术体验,一起在技术领域扶摇直上九万里,共筑坚如磐石的权。

🎉欢迎 👍点赞✍评论⭐收藏

在这里插入图片描述

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

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

相关文章

优思学院|怎样制作优秀的标准作业流程(SOP)?

我相信你一定去过众所周知的麦当劳。它在世界各地都有许多分店。不知道你是否曾在不同地方的麦当劳尝试过他们的美食&#xff0c;但你可能会好奇&#xff0c;为什么无论在世界哪个角落&#xff0c;麦当劳的食物口味都如此一致&#xff1f;它们是如何确保全球各地分店都能提供同…

中断——外部中断EXIT

终端可以分成外部中断和内部中断吗 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 野火中断章节有这样一句话 【F103在内核水平上搭载了一个异常响应系统&#xff0c; 支持为数众多的系统异常和外部中断。 其中系统异常有8个&#xff…

「 网络安全常用术语解读 」网络攻击者的战术、技术和常识知识库ATTCK详解

引言&#xff1a;随着网络攻击手段的不断升级和多样化&#xff0c;网络安全领域面临着越来越严峻的挑战。为了帮助网络安全专业人员更好地识别和防御网络攻击&#xff0c;MITRE公司创建了ATT&CK框架&#xff0c;以提供一个统一且结构化的方法来描述网络攻击者的行为和技巧。…

Git与GitHub零基础教学

大家好&#xff0c;我是星恒&#xff0c;这个帖子给大家分享的是git和github的全套教程&#xff0c;包含github初始&#xff0c;git常用命令以及基本使用&#xff0c;git的ssh链接github&#xff0c;github使用token登录&#xff0c;github和idea的配合&#xff0c;一些平时常用…

SpringCloudConfig+SpringCloudBus+Actuator+Git实现Eureka关键配置属性热更新(全程不重启服务)

文章目录 前言1.痛点2.解决方案3.具体实现3.1搭建热配置服务3.2编写配置文件3.3搭建版本控制仓库3.4Eureka-Client引入以下依赖3.5Eureka-Client微服务编写以下配置bootstrap.yml提前加载3.6分别编写测试Controller3.7测试效果3.8下线场景压测 4.SpringCloudBus优化 前言 在上…

IDEA(十)2022版本 Services中服务窗口不显示端口号解决

目录 一、问题描述二、问题分析三、解决方案3.1 设置启动参数【生效】3.2 方法二&#xff1a;设置环境变量【不生效】3.3 方法三&#xff1a;删除缓存【不生效】 四、补充&#xff1a;如何手动控制端口显示 一、问题描述 我们在使用 IDEA 的过程中&#xff0c;会发现在 Servic…

Midjourney V6超深度评测;开源人工智能:创新的前沿

&#x1f989; AI新闻 &#x1f680; Midjourney V6超深度评测&#xff1a;超现实主义细节爆表 摘要&#xff1a;国外网友Andre Kovalev对Midjourney V6进行了超深度评测&#xff0c;发现V6相较于V5.2在图片真实感、细节表现方面有较大提升。V6拥有超现实主义的特点&#xff…

FA-分配行重分配报错【APP-OFA-48313】

FA-重分配行报错 已存在行只能分多次转移调整 Ref1&#xff1a; APP-OFA-48313 You Cannot Create Identical Distribution Lines with Transfer (Doc ID 336894.1) APPLIES TO: Oracle Assets - Version 11.5.10.0 and later Information in this document applies to any…

ESP32-UDP通信 (Arduino)

ESP32配置UDP通信 介绍 用户数据报协议UDP UDP&#xff08;User Datagram Protocol&#xff09;是一种在计算机网络中常用的传输层协议&#xff0c;它与TCP&#xff08;Transmission Control Protocol&#xff09;一样属于传输层协议的一种。UDP主要用于在网络中传输数据&…

算法每日一题: 分割数组的最大值 | 动归 | 分割数组 | 贪心+二分

Hello&#xff0c;大家好&#xff0c;我是星恒 呜呜呜&#xff0c;今天给大家带来的又是一道经典的动归难题。 题目&#xff1a;leetcode 410给定一个非负整数数组 nums 和一个整数 k &#xff0c;你需要将这个数组分成 k_ 个非空的连续子数组。设计一个算法使得这 k _个子数组…

【Linux】第三十三站:日志

文章目录 一、实现一个简单的日志1.简介2.可变参数3.错误等级4.时间5.打印每一条参数6.与前面的一些代码搭配使用 二、完整代码 一、实现一个简单的日志 1.简介 我们运行代码的时候&#xff0c;我们希望有各种各样的运行时候的一些信息。这也就是日志 它一半有日志时间&…

Python 字符串不可变性的优缺点

随着计算机技术的快速发展&#xff0c;越来越多的编程语言被发明出来&#xff0c;每种编程语言都有自己独特的特点和优势。以我经常使用python写爬虫为例&#xff0c;在 Python 中&#xff0c;字符串是不可变的&#xff0c;这意味着一旦字符串被创建&#xff0c;就不能被修改。…

【机组】微程序控制单元实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​ 目录 &#x1f33a;一、 实验目…

Laykefu客服系统 任意文件上传漏洞复现

0x01 产品简介 Laykefu 是一款基于workerman+gatawayworker+thinkphp5搭建的全功能webim客服系统,旨在帮助企业有效管理和提供优质的客户服务。 0x02 漏洞概述 Laykefu客服系统/admin/users/upavatar.html接口处存在文件上传漏洞,而且当请求中Cookie中的”user_name“不为…

嵌入式C语言基本编写规范

最重要的一条规则 编写代码时最重要的一条规则是&#xff1a;检查周围的代码并尝试模仿它。 作为维护人员&#xff0c;如果收到的补丁明显与周围代码的编码风格不同&#xff0c;这是令人沮丧的。这是不尊重人的&#xff0c;就像某人穿着泥泞的鞋子走进一间一尘不染的房子。 …

RT-Thread 17. 中断发送信号量后线程去处理信号量

1. 代码 //sem.c #include <rtthread.h> #include <rtdevice.h> #include "drv_gpio.h"#define THREAD_PRIORITY 25 #define THREAD_TIMESLICE 5#define LED3_PIN GET_PIN(B, 3) ALIGN(RT_ALIGN_SIZE) static char thread3_stack[1024]; static struct…

2023 IoTDB Summit:北京城建智控科技股份有限公司高级研发主管刘喆《IoTDB在城市轨道交通综合监控系统中的应用》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

CRM是什么软件?

阅读本文&#xff0c;你将了解&#xff1a;一、CRM是什么软件&#xff1b;二、CRM软件如何进行客户管理&#xff1b;三、CRM软件有什么价值&#xff1b;四、优秀案例分享。 一、CRM是什么软件 CRM&#xff08;Customer Relationship Management&#xff0c;客户关系管理&…

用pandas实现用前一行的excel的值填充后一行

今天接到一份数据需要分析&#xff0c;数据在一个excel文件里&#xff0c;内容大概形式如下&#xff1a; 后面空的格子里的值就是默认是前面的非空的值&#xff0c;由于数据分析的需要需要对重复的数据进行去重&#xff0c;去重就需要把控的cell的值补上&#xff0c;然后根据几…

最佳 C++ 编译器

我喜欢 C&#xff0c;这已经不是什么秘密。我偏爱 C 的一个原因是&#xff0c;C 是一个“开放”的编程语言&#xff0c;任何人都可以使用自己喜欢的编译器。当然&#xff0c;C 编译器的种类也很多。同样&#xff0c; C IDE 也不少&#xff0c;我在之前的一个博客中讨论过这个话…