华为OD机试真题——字符串序列判定(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

news2025/5/29 7:46:57

在这里插入图片描述

2025 B卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《字符串序列判定》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C++

C

GO


题目名称:字符串序列判定


知识点:字符串、双指针算法
时间限制:1秒
空间限制:256MB
限定语言:不限


题目描述

输入两个字符串S和L,均只包含英文小写字母。S的长度不超过100,L的长度不超过500,000。判定S是否为L的有效子串,规则如下:

  1. S中的每个字符必须在L中按顺序出现(可不连续)。例如,S="ace"是L="abcde"的有效子串,而S="aec"则不是。
  2. 若S是有效子串,输出其最后一个字符在L中的位置(首位从0开始计算);否则返回-1。

输入描述
输入分为两行:

  • 第一行为字符串S
  • 第二行为字符串L

输出描述
一个整数,表示最后一个有效字符的位置,或-1。

示例
输入:

ace  
abcde  

输出:

4  

解释:S中的字符a、c、e在L中的位置依次为0、2、4,最后一个字符e的位置是4。


Java

问题分析

给定两个字符串S和L,要求判断S是否是L的有效子串,即S中的字符在L中按顺序出现(无需连续)。如果是,返回S最后一个字符在L中的位置;否则返回-1。

解题思路

使用双指针方法遍历字符串:

  1. 指针i指向S的当前字符,初始为0。
  2. 指针j遍历L的每个字符,寻找与S当前字符匹配的位置。
  3. 记录最后一个匹配位置lastPos,当匹配到S中的所有字符时,返回lastPos。
  4. 提前终止条件:若S的长度大于L,直接返回-1;若在遍历过程中S的所有字符都已匹配,立即终止循环。

代码实现

import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
   
        Scanner scanner = new Scanner(System.in);
        String S = scanner.nextLine().trim(); // 读取字符串S
        String L = scanner.nextLine().trim(); // 读取字符串L

        // 如果S的长度大于L,直接返回-1
        if (S.length() > L.length()) {
   
            System.out.println(-1);
            return;
        }

        int i = 0; // 指向S当前需要匹配的字符位置
        int lastPos = -1; // 记录最后一个有效字符的位置

        for (int j = 0; j < L.length(); j++) {
    // 遍历L的每个字符
            if (i == S.length()) {
    // 已匹配所有字符,提前退出
                break;
            }
            if (L.charAt(j) == S.charAt(i)) {
    // 当前字符匹配
                i++; // 移动到S的下一个字符
                lastPos = j; // 更新最后一个有效位置
            }
        }

        // 判断是否全部匹配
        if (i == S.length()) {
   
            System.out.println(lastPos);
        } else {
   
            System.out.println(-1);
        }
    }
}

代码解析

  1. 读取输入:使用Scanner读取两行输入字符串S和L,并去除前后空格。
  2. 长度校验:若S的长度大于L,直接输出-1,无需后续处理。
  3. 双指针遍历
    • i初始化为0,跟踪S的匹配进度。
    • lastPos记录最后一个匹配的位置,初始为-1。
    • 遍历L的每个字符j,若当前字符匹配S的i位置字符,则i自增,并更新lastPos。
    • 当i等于S的长度时,说明所有字符已匹配,提前终止循环。
  4. 结果判断:循环结束后,若i等于S的长度,输出lastPos;否则输出-1。

示例测试

示例1:
输入:

ace
abcde

输出:4
解释:S中的字符依次在位置0、2、4匹配,最后一个字符位置为4。

示例2:
输入:

aec
abcde

输出:-1
解释:无法按顺序找到所有字符,e在c之后出现,无法匹配。

示例3:
输入:

abdbc

输出:4
解释:匹配路径为a(0)、b(1)、c(4),最后一个位置为4。

综合分析

最优性分析

  • 时间复杂度:O(n),只需线性遍历一次L字符串,适用于L长度极大(如50万)的场景。
  • 空间复杂度:O(1),仅使用常数级变量,无额外存储消耗。

正确性保证

  • 双指针确保严格按顺序匹配,不会遗漏或错序。
  • 提前终止条件减少不必要的遍历,提升效率。

适用场景

  • 适用于需要判断子序列存在性及记录位置的场景,如基因序列匹配、日志分析等。

python

问题分析

给定两个字符串S和L,要求判断S是否是L的有效子序列(即S中的字符

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

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

相关文章

工商总局可视化模版-Echarts的纯HTML源码

概述 基于ECharts的工商总局数据可视化HTML模版&#xff0c;帮助开发者快速搭建专业级工商广告数据展示平台。这款模版设计规范&#xff0c;功能完善&#xff0c;适合各类工商监管场景使用。 主要内容 本套模版采用现代化设计风格&#xff0c;主要包含以下核心功能模块&…

Spring AI 和 Elasticsearch 作为你的向量数据库

作者&#xff1a;来自 Elastic Josh Long, Philipp Krenn 及 Laura Trotta 使用 Spring AI 和 Elasticsearch 构建一个完整的 AI 应用程序。 Elasticsearch 原生集成了业界领先的生成式 AI 工具和服务提供商。查看我们关于超越 RAG 基础或使用 Elastic 向量数据库构建生产级应用…

集群聊天服务器学习 配置开发环境(VScode远程连接虚拟机Linux开发)(2)

配置远程开发环境 第一步&#xff1a;Linux系统运行sshd服务 第二步&#xff1a;在vscode上安装Remote Deve I opment插件&#xff0c;其依赖插件会自动安装 第三步&#xff1a;配置远程Linux主机的信息 第四步&#xff1a;在vscode上开发远程连接Linux 第一步&#xff1a;…

rabbitmq的使用介绍

一.队列工作模式介绍 1.WorkQueues模型 生产者直接把消息发送给队列&#xff0c;然后消费者订阅队列 特点: 消息不会重复, 分配给不同的消费者. 代码实现&#xff1a; 消费者代码&#xff1a; Component Slf4j public class SpringRabbitListener {RabbitListener(queues &q…

系统编程day04

一.进程的基本概念 一.定义 进程是一个程序执行的过程&#xff08;也可以说是正在运行的程序&#xff09;&#xff0c;是系统分配资源的基本单位&#xff0c;由cpu对各个进程指挥调度&#xff0c;在单核cpu的情况下,各个进程可以通过一定规则在cpu上并发运行。 二.PCB块 1.PC…

Arduino Uno KY-037声音传感器实验

KY-037声音传感器实验 KY-037声音传感器实验1、 实验内容2、KY-037声音传感器介绍3、实验注意事项4、代码和实验现象 KY-037声音传感器实验 1、 实验内容 通过对KY-037声音传感器吹气&#xff0c;控制LED的打开和关闭&#xff0c;吹一下LED打开&#xff0c;在吹一下LED关闭。…

基于音频Transformer与动作单元的多模态情绪识别算法设计与实现(在RAVDESS数据集上的应用)

摘要&#xff1a;情感识别技术在医学、自动驾驶等多个领域的广泛应用&#xff0c;正吸引着研究界的持续关注。本研究提出了一种融合语音情感识别&#xff08;SER&#xff09;与面部情感识别&#xff08;FER&#xff09;的自动情绪识别系统。在SER方面&#xff0c;我们采用两种迁…

什么是VR实景?有哪些高价值场景?

在数字化浪潮的推动下&#xff0c;虚拟现实技术正以前所未有的速度改变着我们的生活方式和工作模式。 其中&#xff0c;VR实景作为VR技术的一个重要应用场景&#xff0c;独特的沉浸感和交互性&#xff0c;在众多领域展现出应用潜力和高价值场景。什么是VR实景&#xff1f;VR实…

同一无线网络下的设备IP地址是否相同?

在家庭和办公网络普及的今天&#xff0c;许多人都会好奇&#xff1a;连接同一个Wi-Fi的设备是否共享相同的IP地址&#xff1f;这个问题看似简单&#xff0c;实则涉及多个角度。本文将为您揭示其中的技术奥秘。 用一个无线网IP地址一样吗&#xff1f;同一无线网络&#xff08;如…

第2周 PINN核心技术揭秘: 如何用神经网络求解偏微分方程

1. PDEs与传统数值方法回顾 (Review of PDEs & Traditional Numerical Methods) 1.1 什么是偏微分方程 (Partial Differential Equations, PDEs)? 偏微分方程是描述自然界和工程领域中各种物理现象(如热量传播、流体流动、波的振动、电磁场分布等)的基本数学语言。 1.…

【C语言】习题练手套餐 2

每日习题分享。 字符串函数的运用 首先回顾一下字符串函数。 字符串长度 strlen(const char *s);功能&#xff1a;计算字符串的长度&#xff0c;不包含终止符\0。 字符串连接 char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, si…

[项目总结] 基于Docker与Nginx对项目进行部署

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

神经正切核推导(2)

对神经正切核的理解和推导&#xff08;1&#xff09;-CSDN博客 这篇文章包括很多概念的理解 声明&#xff1a; 本篇文章来自于Neural Tangent Kernel &#xff08;NTK&#xff09;基础推导 - Gearlesskai - 博客园 旨在对上述推导过程进行再推导与理解 手写推导部分与其他颜…

Ctrl+鼠标滚动阻止页面放大/缩小

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 一般在我们做大屏的时候&#xff0c;不希望Ctrl鼠标上下滚动的时候页面会放大/缩小&#xff0c;那么在有时候&#xff0c;又不希望影响到别的页面&#xff0c;比如说这个大屏是在另一个管理后台中&am…

3d世界坐标系转屏幕坐标系

世界坐标 ——> NDC标准设备坐标 ——> 屏幕坐标 标准设备NDC坐标系 屏幕坐标系 .project方法将 将向量(坐标)从世界空间投影到相机的标准化设备坐标 (NDC) 空间。 手动实现HTML元素定位到模型位置&#xff0c;实现模型标签效果&#xff08;和css2Render原理同理&#…

【2025】基于Springboot + vue + 协同过滤算法实现的旅游推荐系统

项目描述 本系统包含管理员和用户两个角色。 管理员角色&#xff1a; 用户管理&#xff1a;管理系统中所有用户的信息&#xff0c;包括添加、删除和修改用户。 配置管理&#xff1a;管理系统配置参数&#xff0c;如上传图片的路径等。 权限管理&#xff1a;分配和管理不同角…

AI数据治理破局的战略重构

AI数据治理破局的战略重构 AI正在颠覆传统数据治理模式动态策略驱动的AI治理新模式构建AI时代的数据防护栏结语 人工智能正重塑商业世界&#xff0c;那些真正理解当代数据治理变革的企业将占据决定性优势。 旧日的数据治理手册已经无法应对AI时代的全新挑战&#xff0c;我们需要…

QT6安装与概念介绍

文章目录 前言installModulesQt Core元对象系统属性系统对象模型对象树和所有者信号 & 槽 前言 QT不是纯粹的C标准&#xff0c;它在此基础上引入MOC编译器&#xff0c;在调用C编译器之前会使用该编译器将非C的内容如 Q_OBJECT、signal:等进行处理。此外QT还引入了对象间通…

Docker(二):开机自启动与基础配置、镜像加速器优化与疑难排查指南

引言 docker 的快速部署与高效运行依赖于两大核心环节&#xff1a;基础环境搭建与镜像生态优化。本期博文从零开始&#xff0c;系统讲解 docker 服务的管理配置与镜像加速实践。第一部分聚焦 docker 服务的安装、权限控制与自启动设置&#xff0c;确保环境稳定可用&#xff1b…

Lua基础语法

文章目录 一、注释二、 数据类型1. 注意事项2. 全局/局部变量 三、 标识符1. 保留字2. 变量3. 动态类型 四、 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 其他运算符 五、 函数1. 固定参函数2. 可变参函数3. 可返回多个值4. 函数作为参数 六、循环控制语句1. while...do…