华为OD机试真题 Java 实现【判断字符串子序列】【2023 B卷 100分】,倒序遍历

news2024/11/18 15:25:45

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给定字符串target和source,判断target是否为source的子序列。你可以认为target和source 中仅包含英文小写字母,字符串source可能会很长,长度~=500,000,而target是个短字符串,长度<=100。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置。形成的新字符串,例如,'abc’是’aebycd’的一个子序列,而’ayb’不是。请找出最后一个序列的起始位置。

二、输入描述

第一行输入字符串target;
第二行输入原始字符串source;

比如:

abc
abcaybec

三、输出描述

请找出最后一个序列的起始位置。

3

abcaybec中第0位的abc也匹配,但却不是最后匹配的序列。abcaybec中第3位的aybec去掉字符y、e后也为abc,也与目标字符串相符,故输出最后一个序列aybec的第一个字符的索引位置3。

四、解题思路

  1. 第一行输入给定字符串target;
  2. 第二行输入原始字符串source;
  3. 倒序遍历target和source;
  4. 判断字符串子序列;
  5. 如果字符相等,则遍历target和source的下一个index;
  6. 没有找到相等的字符,继续向左遍历source字符串;
  7. 当i==0时,遍历完毕;
  8. 输出最后一个序列的起始位置;

五、Java算法源码

package com.guor.od;

import java.util.Scanner;

public class OdTest01 {
    /**
     * 判断字符串子序列
     * @autor 哪吒
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 判断target是否为source的子序列
        String target = sc.nextLine();
        String source = sc.nextLine();
        int targetLength = target.length();
        int sourceLength = source.length();
        int i = targetLength - 1;
        int j = sourceLength - 1;
        // 是否有匹配的子序列
        boolean flag = false;
        // 逆序遍历
        while (i >= 0 && j >= 0) {
            if (target.charAt(i) == source.charAt(j)) {
                // 遍历完毕
                if (i == 0) {
                    flag = true;
                    System.out.println(j);
                }
                i--;
                j--;
            } else {
                // 没有找到相等的字符,继续向左遍历source字符串
                j--;
            }
        }
        if (!flag) {
            System.out.println(-1);
        }
    }
}
 

六、效果展示

1、输入

java
jnejzhavuea

2、输出

3

3、说明

jnejzhavuea中第0位的abc也匹配,但却不是最后匹配的序列。jnejzhavuea中第3位的j也可以与后面匹配成子串java,,故输出最后一个序列jzhavuea的第一个字符的索引位置3。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

智汇云舟入选IDC《中国智慧城市数字孪生技术评估,2023》报告

8月7日&#xff0c;国际数据公司&#xff08;IDC&#xff09;发布了《中国智慧城市数字孪生技术评估&#xff0c;2023》报告。智汇云舟凭借在数字孪生领域的创新技术与产品&#xff0c;入选《2023中国数字孪生城市技术提供商图谱》。 报告通过公开征集的形式进行申报&am…

PCkit3如何刷固件

PCkit3如何刷固件 一般在MAPLAB安装时&#xff0c;在安装路径下面都会自带所有烧写器的固件包&#xff0c;找到对应的固件包利用MPLAB进行刷新就行了&#xff0c;具体步骤如下&#xff1a; 首先打开MPLAB软件&#xff0c;然后Programmer->Settings…然后点击configuration …

线程控制+线程tid+线程局部存储+线程私有栈

线程控制函数 今天学习的都是linux线程库中的函数。<pthread.h> pthread_creat()创建线程 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 参数 thread:返回线程IDattr:设置线程的属性&…

eclipse怎么导入web项目?看这篇为你解决!

引言【注意】 在导入别人写好或者自己写的web项目要确定以下几点&#xff0c;防止导入的时候出现错误。 确认eclipse的版本&#xff1b;如果web项目是21版的eclipse写的&#xff0c;而你要导入的的eclipse是17版的会出现错误&#xff0c;导入了也没用&#xff0c;运行不出结果。…

Huggingface使用

文章目录 前置安装Huggingface介绍NLP模块分类transformer流程模块使用详细讲解tokennizermodeldatasetsTrainer Huggingface使用网页直接体验API调用本地调用(pipline)本地调用&#xff08;非pipline&#xff09; 前置安装 anaconda安装 使用conda创建一个新环境并安装pytorc…

Qt应用开发(基础篇)——LCD数值类 QLCDNumber

一、前言 QLCDNumber类继承于QFrame&#xff0c;QFrame继承于QWidget&#xff0c;是Qt的一个基础小部件。 QLCDNumber用来显示一个带有类似lcd数字的数字&#xff0c;适用于信号灯、跑步机、体温计、时钟、电表、水表、血压计等仪器类产品的数值显示。 QLCDNumber可以显示十进制…

关于将预留单中增强字段带入物料凭证和会计凭证中

1、业务需求 预留中自定义文本字段“大项修”。根据预留创建物料凭证时&#xff0c;将该字段带入到物料凭证中&#xff0c;类似标准字段“项目文本”。并在物料凭证自动产生会计凭证后&#xff0c;将该字段带入到会计凭证行项目中。 其中需要解决以上三张凭证对该字段的界面显…

c/c++函数可变参数的实现

c语言&#xff0c;利用<stdarg.h> 里面的 typedef char* va_list; void va_start ( va_list ap, prev_param ); /* ANSI version */ type va_arg ( va_list ap, type ); void va_end ( va_list ap );#include <stdio.h> #include <stdarg.h> double Sum(int…

火爆全球的AI艺术二维码到底是怎么做的?

如今&#xff0c;二维码扫描已经成为一种与呼吸一样自然的本能动作。支付、购物、点餐、订票、浏览网页&#xff0c;几乎所有事情都可以通过扫描二维码来完成。你是否可以想象到下面是二维码&#xff1f;AI生成的艺术二维码使二维码瞬间变得高逼格。这些艺术二维码极具吸引力&a…

如何制定项目计划?甘特图告诉你

最近被领导指派负责一个新的项目&#xff0c;我想把项目做成功&#xff0c;给老板留下深刻的印象&#xff0c;同时也给自己的职业生涯添上浓墨重彩的一笔。 但是&#xff0c;项目管理流程很复杂&#xff0c;项目本身也不好做。在收集了与该项目有关的所有信息&#xff0c;并将…

亚马逊搜索关键词下单有哪些好处

在亚马逊上使用搜索关键词进行下单有许多好处&#xff0c;以下是其中一些主要的优点&#xff1a; 1、准确的产品匹配&#xff1a; 通过输入相关的搜索关键词&#xff0c;您可以更准确地找到您所需的产品&#xff0c;从而避免了浏览大量无关的商品页面。 2、节省时间&#xff…

亚马逊买家账号多久可以评论

根据亚马逊的政策&#xff0c;买家账号在购买商品后通常需要等待一段时间才能发布评论。 1、实物商品&#xff1a; 买家需要等待购买商品后的48小时&#xff0c;然后才能发布评论。 2、数字商品&#xff1a; 买家需要等待购买数字商品后的24小时&#xff0c;然后才能发布评论…

深度学习之用PyTorch实现逻辑回归

0.1 学习视频源于&#xff1a;b站&#xff1a;刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容&#xff0c;若有错误欢迎指正&#xff01; 代码&#xff08;类比线性回归&#xff09;&#xff1a; # 调用库 import torch import torch.nn.functional as F#…

[保研/考研机试] KY187 二进制数 北京邮电大学复试上机题 C++实现

描述 大家都知道&#xff0c;数据在计算机里中存储是以二进制的形式存储的。 有一天&#xff0c;小明学了C语言之后&#xff0c;他想知道一个类型为unsigned int 类型的数字&#xff0c;存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗&#xff1f;并且&#xff0c;小…

使用MyEclipse如何部署Descriptor (XML)编辑器?

Descriptor (XML) Editor编辑器包含了高级的XML编辑功能&#xff0c;在本文中您将了解到这些编辑功能、Web XML编辑等&#xff0c;此功能包含在MyEclipse中可用。 MyEclipse v2023.1.2离线版下载 1. Web XML 编辑器 MyEclipse Web XML编辑器包括高级XML编辑功能&#xff0c;…

2022年世界各国GDP总量、人均GDP总量及排名

【勘误&#xff1a;表格第103哥伦比亚应为柬埔寨】

线程隔离问题之服务降级、熔断

一、雪崩问题 微服务中&#xff0c;服务间调用关系错综复杂&#xff0c;一个请求&#xff0c;可能需要调用多个微服务接口才能实现&#xff0c;会形成非常复杂的调用链路&#xff1a; 如图&#xff0c;一次业务请求&#xff0c;需要调 用A、P、H、I四个服务&#xff0c;这四个…

【LeetCode每日一题】——575.分糖果

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 575.分糖果 四【题目描述】 Alice 有 n 枚糖&…

​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》

【转】彻底搞明白 GB2312、GBK 、GB18030和UTF-8

日常工作的过程中&#xff0c;关于字符编码的问题经常让人头疼不已&#xff0c;这篇文章就来捋一捋关于 GB2312、GBK、GB18030 相关的知识 以及它们和 Unicode 的关系 简介 GB2312&#xff08;2个字节&#xff09; 1980 年&#xff0c;中国发布了第一个汉字编码标准&#xf…