每日一道算法题 16(2023-12-29)

发布时间:2024年01月24日

package com.tarena.test.B20;

import java.util.Arrays;
import java.util.Scanner;

/**
?*?
?*?
?题目描述:
输入一个由n个大小写字母组成的字符串,按照Ascii码从小到大的排序规则,查找字符串中第k个最小ascii码值的字母(k>=1),输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0)
k如果大于字符串长度,则输出最大ascii值的字母所在字符的位置索引,如果有重复的字母,则输出字母的最小位置索引。
输入描述:
第一行输入一个由大小写字母组成的字符串
第二行输入k,k必须大于0,k可以大于输入字符的长度
输出描述:
输出字符串中第k个最小ascii码值的字母所在字符串的位置索引,k如果大于字符串长度,则输出最大ascii值的字母所在字符串的位置索引,如果第k个最小ascii码值的字母存在重复,则输出该字母的最小位置索引
示例1
输入:
AbcDeFG
3
输出:
5
示例2
输入:
AbCdeFeeeeG
20
输出:4

?*/
public class B28 {
?? ?public static void main(String[] args) {
?? ??? ?try(Scanner sc = new Scanner(System.in)){
?? ??? ??? ?
?? ??? ??? ?String str = sc.nextLine();
?? ??? ??? ?int index = Integer.parseInt( sc.nextLine());
?? ??? ??? ?System.out.println(resultStr(index,str));
?? ??? ?}
?? ?}
?? ?public static Integer resultStr(Integer index,String str) {
?? ??? ?char[] arr = str.toCharArray();
?? ??? ?Arrays.sort(arr);
?? ??? ?
?? ??? ?if(index>arr.length) {
?? ??? ??? ?index = arr.length;
?? ??? ?}
?? ??? ?char c = arr[index-1];
?? ??? ?int minIndex = str.indexOf(c);
?? ??? ?return minIndex;
?? ?}
}

了解知识点

1、ASCII 大小写的编码

2、 Arrays 默认排序规则

文章来源:https://blog.csdn.net/zhen340417593/article/details/135539985
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。