华为OD机试 - 求满足条件的最长子串的长度 - 双指针(Java 2023 B卷 100分)

news/2024/7/20 17:49:01 标签: 华为od, java, 开发语言, 双指针

在这里插入图片描述

目录

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

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

专栏导读

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

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

一、题目描述

给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求:
1、 只包含1个字母(a-z, A-Z),其余必须是数字;
2、 字母可以在子串中的任意位置;
如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。

二、输入描述

字符串(只包含字母和数字)。

三、输出描述

子串的长度。

输入输出说明
abC124ACb4满足条件的最长子串是C124或者124A,长度都是4
a52字符串本身就是满足要求的子串
aBB92满足条件的为B9,长度为2
abcdef-1没有满足条件的子串

四、解题思路

题读百遍,其义自见。

题意:

只包含1个字母(a-z, A-Z),其余必须是数字。

也就是说,我取到字符串中所有字母的下角标,相邻字母下角标差值最大,即是最长子串的长度。

这就简单了,果断上双指针,left表示要比较的相邻字母的开始字母下角标,right表示要比较的相邻字母的结束字母下角标。

求right - left的最大值即是结果。

五、Java算法源码

java">package com.guor.od;

import java.util.*;

public class OdTest02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        int left = -1;
        int right = Integer.MAX_VALUE;
        int max = 0;
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            // 判断是字母
            if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
                // 第一个字母
                if(left == -1){
                    left = i;
                }else{
                    right = i;
                    // 取两字母的最大下角标差
                    if(right - left > max){
                        max = right - left;
                    }
                    left = right;
                }
            }
        }
        System.out.println(max);
    }
}

六、效果展示

1、输入

abC124ACb

2、输出

4

3、说明

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

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

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

在这里插入图片描述


http://www.niftyadmin.cn/n/4976809.html

相关文章

【VS Code插件开发】状态栏(五)

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域优质作者、阿里云专家博主&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4e2; 资料领取&#xff1a;前端…

Django基础6——数据模型关系

文章目录 一、基本了解二、一对一关系三、一对多关系3.1 增删改查3.2 案例&#xff1a;应用详情页3.2 案例&#xff1a;新建应用页 四、多对多关系4.1 增删改查4.2 案例&#xff1a;应用详情页4.3 案例&#xff1a;部署应用页 一、基本了解 常见数据模型关系&#xff1a; 一对一…

数据仓库环境下的超市进销存系统结构

传统的进销存系统建立的以单一数据库为中心的数据组织模式&#xff0c;已经无 法满足决策分析对数据库系统的要求&#xff0c;而数据仓库技术的出现和发展&#xff0c;为上述问题 的解决提供了强有力的工具和手段。数据仓库是一种对多个分布式的、异构的数据 库提供统一查询…

c语言练习题34:打印整数二进制的奇数位和偶数位

打印整数二进制的奇数位和偶数位 获取一个整数二进制序列中所有的偶数位和奇数位&#xff0c;分别打印出二进制序列 思路&#xff1a; 1. 提取所有的奇数位&#xff0c;如果该位是1&#xff0c;输出1&#xff0c;是0则输出0 2. 以同样的方式提取偶数位置检测num中某一位是0还…

九大ES5特性,巩固你的JavaScript基础

文章目录 1. 变量声明和作用域&#xff1a;使用 var 关键字声明变量函数作用域和全局作用域变量提升 2. 数据类型&#xff1a;基本数据类型&#xff1a;Number、String、Boolean、null、undefined引用数据类型&#xff1a;Object、Array、Function、Date 3. 函数&#xff1a;函…

简单快速制作瓜分红包营销活动

在当前激烈的市场竞争中&#xff0c;如何吸引客户的眼球并促使他们积极参与营销活动&#xff0c;是每个企业都面临的难题。其中&#xff0c;瓜分红包营销活动是一种备受欢迎的方式。下面就以乔拓云平台为例&#xff0c;介绍如何借助第三方平台制作令人惊艳的瓜分红包营销活动。…

C#,《小白学程序》第七课:列表(List)应用之一————编制高铁车次信息表

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary>…

Pygame编程(8)image模块

Pygame编程&#xff08;8&#xff09;image模块 函数示例 函数 pygame.image.load 从文件&#xff08;或类似文件的对象&#xff09;加载新图像load(filename) -> Surfaceload(fileobj, namehint“”) -> Surface pygame.image.save 将图像保存到文件&#xff08;或类似…