目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
输入一个由N个大小写字母组成的字符串,按照ASCII码值从小到大进行排序,查找字符串中第K个最小ASCII码值的字母(k>=1)。
输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0)。
k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果有重复字母则输出字母的最小位置索引
二、输入描述
第一行输入一个由大小写字母组成的字符串
第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度
三、输出描述
输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。
k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引。
四、解题思路
- 第一行输入一个由大小写字母组成的字符串
- 第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度
- 按照ASCII码值从小到大进行排序
- 通过克隆备份一个字符串数组
- 查找字符串中第K个最小ASCII码值的字母
- 遍历克隆的未排序的字符串数组
- 输出该字母所在字符串中的位置索引
五、Java算法源码
package com.guor.od;import java.util.*;public class OdTest01 {/*** 查找字符串中第K个最小ASCII码值的字母*/public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 第一行输入一个由大小写字母组成的字符串String input = sc.nextLine();// 第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度int k = Integer.valueOf(sc.nextLine());char[] arr = input.toCharArray();char obj = ' ';char[] cloneArr = arr.clone();// 按照ASCII码值从小到大进行排序Arrays.sort(arr);if (k > arr.length) {obj = arr[arr.length - 1];} else {// 查找字符串中第K个最小ASCII码值的字母obj = arr[k - 1];}for (int i = 0; i < cloneArr.length; i++) {// 输出该字母所在字符串中的位置索引if (obj == cloneArr[i]) {System.out.println(i);break;}}}
}
六、效果展示
1、输入
AbCdeFG
3
2、输出
5
3、说明
🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。