华为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码值的字母存在重复 则输出该字母的最小位置索引。
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;
}
}
}
}
AbCdeFG
3
5
下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。