目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、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在线答疑。