当前位置: 首页 > news >正文

华为OD机试 - 第 K 个字母在原来字符串的索引(Java 2024 E卷 100分)

在这里插入图片描述

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

专栏导读

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

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给定一个字符串🔍,把字符串按照大写在前小写在后排序,输出排好后的第 K 个字母在原来字符串的索引。

相同字母输出第一个出现的位置。

二、输入描述

三、输出描述

四、测试用例

测试用例1:

1、输入

hAkDAjByBq 4

2、输出

6

3、说明

排好序后 AABBDhjkqy,第 4 个是 B,第一个出现的在原字符串 6 这个位置。(注:索引是从 0 开始)

测试用例2:

1、输入

ABCDWXYZ 3

2、输出

2

3、说明

按照大写字母在前,小写字母在后的规则进行排序(输入中只有大写字母),并按字典顺序排列,结果为:ABCDWXYZ(与输入顺序相同)。

排序后第 3 个字符是 C。

在原始字符串 ABCDWXYZ 中,C 第一次出现的位置是索引 2(索引从 0 开始)。

五、解题思路

根据题目要求,我们需要将字符串中的字符按照大写字母在前、小写字母在后排列,且保持字典顺序。为了实现这个过程,我们需要进行分类排序。大写字母需要被优先排列,其次是小写字母,而其他符号可以忽略。

将字符串分割成两类:大写字母和小写字母。我们先按照大小写区分排序,然后对每一类字母按照字典顺序排序,这样可以确保大写字母在前,小写字母在后,并且同类型的字符保持字典顺序。

根据用户输入的第 K 个字符(1-based index),从排序后的列表中找到这个字符。

在原始字符串中查找这个字符的第一次出现位置,并返回其索引。这要求遍历原字符串,找到目标字符的位置。

六、Java算法源码

public class OdTest01 {public static void main(String[] args) {// 使用 Scanner 从标准输入读取数据Scanner scanner = new Scanner(System.in);String input = scanner.next();  // 读取字符串int k = scanner.nextInt();  // 读取整数 kscanner.close();int result = findKthCharacterIndex(input, k);System.out.println(result);  // 输出结果}public static int findKthCharacterIndex(String input, int k) {// 将输入字符串转换为字符列表List<Character> charList = new ArrayList<>();for (char c : input.toCharArray()) {charList.add(c);}// 自定义比较器:大写在前,小写在后,同类型按字典顺序排序Collections.sort(charList, new Comparator<Character>() {@Overridepublic int compare(Character c1, Character c2) {boolean isUpper1 = Character.isUpperCase(c1);boolean isUpper2 = Character.isUpperCase(c2);// 大写在前if (isUpper1 && !isUpper2) {return -1;} else if (!isUpper1 && isUpper2) {return 1;}// 同类型按字典顺序return c1 - c2;}});// 排序后的第 k 个字符char kthChar = charList.get(k - 1);  // k 是 1-based,需要 -1 转换为 0-based// 在原字符串中找到第 k 个字符的索引for (int i = 0; i < input.length(); i++) {if (input.charAt(i) == kthChar) {return i;  // 返回第一个出现的索引}}// 未找到字符,返回 -1return -1;}
}

七、效果展示

1、输入

aBcDwXyZ 8

2、输出

6

3、说明

按照大写字母在前,小写字母在后的规则进行排序,结果为:BDWZacwy。

排序后的第 8 个字符是 y。

在原始字符串 aBcDwXyZ 中,字符 y 第一次出现的位置是索引 6(索引从 0 开始)。

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 E卷 200分)

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

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.mrgr.cn/news/65145.html

相关文章:

  • 【Linux探索学习】第十弹——Linux工具篇(五):详解Linux 中 Git 工具的使用与相关知识点
  • 如何修改WordPress经典编辑器的默认高度?
  • 《现代工业经济和信息化》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • Ubuntu 22.4 LTS 源码编译Tigervnc
  • 【elkb】创建用户和角色
  • 【力扣热题100】[Java版] 刷题笔记-121. 买卖股票的最佳时机
  • grpc 云原生 概念介绍
  • 2024 CSS保姆级教程 - BFC详解
  • PostgreSQL 安装 POSTGRES_FDW
  • pcdn的成本构成(壹)
  • CentOS 7 安装 ntp,自动校准系统时间
  • Python编程风格:使用语义更加明确的方法
  • 数据库基础(1) . 关系型数据库
  • 在 Vision Pro 上打造成功的沉浸式叙述应用:探索极致交互体验
  • VidPanos:从随手拍摄的平移视频生成全景视频
  • mysql报错:Field id doesnt hava a default value
  • 《LoRA-IR》:2024年10月中科院自动所提出了一种用于多种修复图像恶化退化问题的LORA,效果拔群
  • 计算机毕业设计Spark+大模型股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • Node.js:ES6 模块化 Promise
  • Intel nuc x15 重装系统步骤和注意事项(LAPKC71F、LAPKC71E、LAPKC51E)
  • XPath 实例
  • 哪些因素导致了 MySQL 数据库的延时呢?
  • Vuex的基本使用
  • Nginx 在中小企业的初级应用实操指南
  • C语言 | Leetcode 题解之第535题TinyURL的加密与解密
  • Thumb 汇编指令集,Thumb 指令编码方式,编译 Thumb 汇编代码