【华为上机真题 2022】字符串序列判定

news2024/10/3 2:27:14

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.1 输入描述

1.2 输出描述

1.3 测试样例

1.3.1 示例 1

1.3.2 示例 2

二、解题思路

三、代码实现

四、时间复杂度


注意:题目来源于网络用户分享,本文仅分享做题思路和方法,如有侵权请联系我删除!

一、题目描述

输入两个字符串 S 和 L,都只包含英文小写字母,S 长度 <= 100, L 长度 < 500,000。判定 S 是否是 L 的有效子串。

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

1.1 输入描述

输入两个字符串 S 和 L , S 长度 < 100, L 长度 <= 500,000。

1.2 输出描述

S 串最后一个有效字符在L中的位置(首位从 0 开始计算,无有效字符返回 -1)

1.3 测试样例

1.3.1 示例 1

输入

ace
abcde

输出

4

1.3.2 示例 2

输入

fgh
abcde

输出

-1


二、解题思路

本题可以用贪心的思路解决,初始化两个指针 i 和 j,分别指向 S 和 L 的初始位置。每次贪心地匹配,匹配成功则 i 和 j 同时右移,匹配 S 的下一个位置,匹配失败则 j 右移,i 的位置不变,尝试用 L 的下一个字符匹配 S。 最后如果 S 中的字符全部匹配完成,则表示 S 是 L 的子串,注意记录最后匹配字符的位置。

三、代码实现

代码实现如下所示。

#include <iostream>
using namespace std;


int isSubsequence(string s, string t) {
    int n = s.length(), m = t.length();
    int ans = -1;
    int i = 0, j = 0;
    while (i < n && j < m) {
        if (s[i] == t[j]) {
            i++;
            if (i == n) {
                ans = j;
                break;
            }
        }
        j++;
    }
    return ans;
}

int main()
{
    string strS, strL;
    while (cin>>strS>>strL) {
        int ans = isSubsequence(strS, strL);
        cout<<ans<<endl;
    }
    return 0;
}

四、时间复杂度

时间复杂度:O(n)

在上述代码中,n 表示字符串 L 的长度,需要遍历字符串 L 查找 S 是否是其子串,所以时间复杂度为 O(n)。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章」回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


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

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

相关文章

中断系统中的设备树__中断号的演变与irq_domain

1 中断号与硬件相关_号码固定 当我们的系统中只有一两个中断控制器时&#xff0c;上面的方法很有用&#xff0c;可以给每一个中断预先确定好他的虚拟中断号&#xff0c;但是当中断控制器越来越多、当中断越来越多&#xff0c;上述方法(virq和hwirq固定绑定)有缺陷: a. 增加工作…

马克思的手稿-第11届蓝桥杯Scratch选拔赛真题精选

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第92讲。 蓝桥杯选拔赛每一届都要举行4~5次&#xff0c;和省赛、国赛相比&#xff0c;题目要简单不少&#xff0c;再加上篇幅有限&#xff0c;因此我精挑细选…

23软考备考已开始,网络工程师知识点速记~(2)

新一轮软考备考来啦~ 为了帮助大家提高备考效率&#xff0c;将2023上半年软考网络工程师知识点速记分享给大家&#xff0c;快来跟着一起打卡学习吧&#xff01; 指令系统 指令系统是中央处理器所有指令的集合&#xff0c;通常一条指令可分解为操作码和地址码两部分&#xff…

python 从一道作业题到制作一个图形界面的“诈金花”游戏

题目很简单&#xff1a;就是自己写一个程序&#xff0c;实现诈金花游戏的发牌、判断输赢。 规则&#xff1a; 一付扑克牌&#xff0c;去掉大小王&#xff0c;每个玩家发3张牌&#xff0c;最后比大小&#xff0c;看谁赢。 牌型&#xff1a; 豹子&#xff1a;三张一样的牌&am…

Fluent案例:肾动脉RDN治疗过程的仿真

1 问题背景 肾动脉消融&#xff08;Renal denervation&#xff0c;简称RDN&#xff09;是一种治疗高血压的办法&#xff0c;其基本原理为利用插入肾动脉的电极消融导管进行射频消融&#xff0c;使肾动脉血管壁附近的交感神经因高温而损伤失活&#xff0c;减少神经系统过度活跃的…

想转行做IC,却找不到适合自己的岗位?

想跨行从事IC行业&#xff0c;但是没有一个比较好的学历&#xff0c;也没有一个很好的专业&#xff0c;或者受限于各种各样的外在条件&#xff0c;那么在这个行业里面&#xff0c;到底有没有个岗位能够适合自己上手呢&#xff1f; 当然有&#xff0c;不是所有芯片岗位都要高学…

什么是自监督,自监督和有监督的区别什么是SSL

有监督 就是让机器做题目&#xff0c;给他标准答案 那无监督 可以自己推出来的吧 就是没有给标准答案 也就是label 或者在目标检测里面说是groundTruth 什么是Ground-truth&#xff0c;Ground-truth什么意思_&#xff1a;&#xff09;&#xfffd;东东要拼命的博客-CSDN博客_…

基于日特征气象因素的支持向量机预测电力负荷(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

tkinter绘制组件(37)——普通图片

tkinter绘制组件&#xff08;37&#xff09;——普通图片引言布局函数结构添加图片图片缩放完整函数代码效果测试代码最终效果github项目pip下载结语引言 其实&#xff0c;本来不打算专门为TinUI写图片元素控件的&#xff0c;让编写者自行使用PhotoImage类和画布自带的create_…

[附源码]JAVA毕业设计计算机类课程实验平台(系统+LW)

[附源码]JAVA毕业设计计算机类课程实验平台&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

【编程题】【Scratch一级】2022.09 踢足球

踢足球 1. 准备工作 &#xff08;1&#xff09;选择背景Baseball 2&#xff1b; &#xff08;2&#xff09;删除默认的小猫角色&#xff0c;选择角色Ben和Soccer Ball。 2. 功能实现 &#xff08;1&#xff09;Ben初始造型为ben-a&#xff0c;初始位置为舞台左下角&#xf…

开发3年入职饿了么P6,全靠这份MyBatis学习笔记了

前言 相信大部分程序员工作中都有接触过MyBatis&#xff0c;那么它到底重不重要呢&#xff1f;答案是肯定的呀&#xff01; 互联网公司基本都是用Mybatis做为持久层框架的&#xff0c;所以&#xff0c;Mybatis是一定要学的&#xff01;&#xff01;&#xff01; 不管是在工作中…

[附源码]Python计算机毕业设计Django公共台账管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

PMP项目管理中的各种图

直方图 柱状图,条形图,用来统计 帕累托图 就是把直方图进行排序 散点图 分析2个元素之间的相关性 矩阵图 在行列交叉的位置展示因素、原因和目标之间的关系强弱

10 个你必须要知道的重要JavaScript 数组方法

数组方法在 JavaScript 中是必不可少的&#xff0c;数组方法有很多。对于忙碌的初学者&#xff0c;我选择了 10 种最常见的数组方法&#xff0c;你必须学习它们&#xff0c;这些可以帮助你提升学习效率&#xff0c;节省时间。 为了便于理解&#xff0c;我为每个数组方法提供了…

不强迫登录!Apipost用着真爽!

Apipost在上个版本推出了Apipost网页版&#xff0c;用户无需下载软件在官网就可以直接体验到Apipost的很多强大功能。 Apipost 7版本在使用网页版时的登录问题上&#xff0c;让用户在无需下载的基础上&#xff0c;更无需登录&#xff0c;就可以便捷使用Apipost更多的功能&…

Promise期约函数的实现

前言 Promise也叫期约函数,是ES6中新增的特性,是解决异步编程的一种方案,取代回调函数避免回调地狱。 const p new Promise((resolve,reject)>{resolve(1); });// 链式调用 p.then(res > Promise.resolve(res 2)).then(res > Promise.resolve(res 3)).then(res &…

嵌入式系统硬件概述

文章目录嵌入式系统硬件平台(1) 嵌入式处理器的分类(2) 嵌入式微处理器MIPS处理器PowerPC处理器ARM处理器ARM发展历史ARM公司介绍ARM市场份额嵌入式微控制器&#xff08;MCU&#xff09;数字信号处理器&#xff08;DSP&#xff09;嵌入式片上系统&#xff08;SoC&#xff09;嵌…

【uni-app】总结uni-app订单支付和打包发布

前言 总结uni-app订单支付和打包发布 1- 支付 1.1 app的支付 1.1.1 准备工作 支付厂商 获取id 去微信支付平台接入微信支付 支付宝 打包时候 去mainifest.json文件下&#xff0c;找到 app模块配置 &#xff0c;勾选payment支付 1.1.2 代码 获取支付厂商 uni.getProvide() u…

Spring Boot 程序优化的 14 个小妙招!

1.定义配置文件信息 有时候我们为了统一管理会把一些变量放到yml配置文件中 例如 图片 用 ConfigurationProperties 代替Value 使用方法 定义对应字段的实体 Data // 指定前缀 ConfigurationProperties(prefix "developer") Component public class Developer…