首页 > 编程语言 >程序分享--常见算法/编程面试题:判断子序列

程序分享--常见算法/编程面试题:判断子序列

时间:2024-06-18 18:56:48浏览次数:17  
标签:面试题 return -- 编程 面试 字符串 心得 size

关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;

推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可接项目赚外快,绝对划算。不仅学会如何编程,还将学会如何将AI技术应用到实际问题中,为您的职业生涯增添一笔宝贵的财富。

-------------------------------------正文----------------------------------------

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

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

进阶:

如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

示例 1:

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

示例 2:

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

提示:

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

-------------------------------------答案----------------------------------------

双指针,i指向s,j指向t

如果s[i]==t[j],则匹配到一个字母,两个指针都后移
如果s[i]!=t[j],则指针j后移继续寻找。

class Solution {
public:
    bool isSubsequence(string s, string t) {
        int i = 0, j = 0;
        if(s.size() == 0) return true;
        while(i < s.size() && j < t.size()) {
            if(s[i] != t[j]) {
                j++;
                if(j >= t.size()) {
                    return false;
                }
            } else {
                i++, j++;
                if(i >= s.size()) {
                    return true;
                }
            }
        }
        return false;
    }
};

感兴趣的同学辛苦 关注/点赞 ,持续分享逻辑、算法、管理、技术、人工智能相关的文章。

有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。
或关注博主免费专栏【程序员宝典--常用代码分享】里面有大量面试涉及的算法或数据结构编程题。

博主其它经典原创:《管理心得--如何高效进行跨部门合作》,《技术心得--如何成为优秀的架构师》、《管理心得--如何成为优秀的架构师》、《管理心理--程序员如何选择职业赛道》,及
C#实例:SQL如何添加数据》,《C#实战分享--爬虫的基础原理及实现》欢迎大家阅读。

标签:面试题,return,--,编程,面试,字符串,心得,size
From: https://blog.csdn.net/weixin_60437218/article/details/139442842

相关文章

  • Linux 提权-MySQL UDF
    本文通过Google翻译MySQLUserDefinedFunctions–LinuxPrivilegeEscalation这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0前言1什么是用户定义函数(UDF)?2枚举UDF漏洞利用条件2.1手动枚举UDF漏洞利用条件......
  • 1.2 陶瓷电容(MLCC)选型----硬件设计指南(持续补充更新)
    本系列文章是笔者总结多年工作经验,结合理论与实践进行整理备忘的笔记。希望能直接指导硬件工程师的设计实操,争取每一条设计要点指南都做到有理有据。既能帮助自己温习整理避免遗忘也能帮助其他需要参考的朋友。笔者也会不定期根据遇到的问题和想起的要点进行查漏补缺。如有谬误,欢......
  • Profibus转Modbus网关帮助PLC实现智能激光设备通讯
    一、前言Profibus协议转Modbus协议网关模块(XD-MDPB100)是一种工业通信协议转换设备,用于实现Profibus协议与Modbus协议之间的转换。Profibus转Modbus网关在工业自动化系统中具有广泛的应用,它解决了不同协议设备之间的通信问题。本文将深入探讨PLC通过Profibus转Modbus网关与激光设......
  • linux 部署jar包
    1.准备工作linux如果没有配置java环境变量的话,具体操作见文末推荐。2.启动jar包linux操作系统下启动jar包的方式和windows操作系统没有区别。用法都是遵循java语法规范。前提:跳转到要启动的jar包所在目录。cdjar包所在绝对路径使用默认jdk启动查看当前jdk版本java-......
  • 红队打点思路
    打点基本方法基本方法,信息搜集->找脆弱资产->漏洞利用->getshell使用oneforall来跑一遍-->得到一堆子域名拿到这一堆子域名丢给Eeyes跑一遍-->得到对应子域名对应的ip和c段信息将对应ip和c段丢给fofa和fscan、awvs-->fofa能快速得到c段资产信息,fscan能快速扫一遍,随便帮......
  • 闲说: Java 中Comparable 和 Comparator 的区别
    共同点Comparable和Comparator他们都可以实现集合的排序功能;区别Comparable被实现类实现后,需要重写compareTo方法,方可使用Collections/Arrays工具类提供的排序方法进行排序;Comparator被实现类实现后,也可以重写compare方法,这个方法虽然能返回两个对象的大小......
  • 记录--createObjectURL这个API真好用,我举几个场景你们就懂了
    ......
  • 【Spring】Bean管理
    获取Bean要从IOC容器当中来获取到bean对象,需要先拿到IOC容器对象@AutowiredprivateApplicationContextapplicationContext;//IOC容器对象Spring容器中提供了一些方法,可以主动从IOC容器中获取到bean对象,下面介绍3种常用方式:根据name获取beanObjectgetBean(Stringna......
  • centos7 安装 python3.12
    准备工作yuminstallcentos-release-sclsclenabledevtoolset-11bashwgethttps://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz编译注意是在scl环境下进行的,gcc版本过低的环境会导致编译失败tar-zxfPython-3.12.4.tgzcdPython-3.12.4./configure--pr......
  • 我在美国退退退
    Costco奇葩的退换货政策是全球闻名的。有人会问,任由消费者随意退换货,Costco不会亏损吗?商家愿意吗?事实是,用户满意度极高的同时,Costco的业绩也在稳定增长。无数商家仍在打破脑袋,希望挤进Costco的选品清单。今年618期间,拼多多因为“客服宠粉”而冲上热搜。曾因“仅退款”政策在业......