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

B28问题:通过Java代码实现字符串按ASCII值排序,找出第k个字母及其位置。如果k大于长度,返回最大ASCII字母位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 默认排序规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值