【华为OD题库-071】字符串筛选排序-java

题目

输入一个由n个大小写字母组成的字符串,按照Ascii码值从小到大的排序规则,查找字符串一中第k个最小ascii码值的字母(k>= 1),输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0)。
k如果大于字符串长度,则输出最大ascii值的字母所在字符串的位置索引,如果有重复的字母,则输出字母的最小位置索引。
输入描述:
第一行输入一个由大小写字母组成的字符串
第二行输入k,k必须大于0,k可以大于输入字符串的长度
输出描述:
输出字符串中第k个最小 ascii码值的字母所在字符串的位置索引。k如果大于字符串长度,则输出最大ascii值的字母所在字符串的位置索引,如果第k个最小ascii码值的字母存在重复,则输出该字母的最小位置索引。
示例1:
输入
AbCdeFG
3
输出
5
说明:
根据ASCII码值排序,第三个ASCII码值的字母为F,F在字符串中位置索引为5(0为字符串的第一个字母位置索引)
示例2:
输入:
fAdDAkBbBq
4
输出:
6
说明:
根据ASCII码值排序前4个字母为AABB由于B重复则只取B的第一个最小位置索引6,而不是第二个B的位置索引8

思路

将输入按照ascii码升序,索引升序排序,取第k个值的索引即可
如果k大于输入字符串长度,k等于str.length
如果取到的字符有多个,则找到最前面的那个(索引最小)

题解

package hwod;import java.util.*;public class StringSort {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();int n = sc.nextInt();System.out.println(stringSort(str, n));}// 按ascii码升序,索引升序排序private static int stringSort(String str, int k) {char[] chars = str.toCharArray();k=Math.min(str.length(),k);k--;List<int[]> list = new ArrayList<>();for (int i = 0; i < chars.length; i++) {list.add(new int[]{chars[i], i});}list.sort((o1, o2) -> {if (o1[0] != o2[0]) return o1[0] - o2[0];return o1[1] - o2[1];});//找到最前面的相同值int j = k - 1;while (j >= 0 && list.get(j)[0] == list.get(k)[0]) {j--;}return list.get(j + 1)[1];}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阻碍“元宇宙”游戏行业发展的最大瓶颈是什么?

很显然&#xff0c;我们现在还没看到真正的“元宇宙”产品&#xff0c;在3-5年内也不太可能看到这样的产品。按照米哈游CEO蔡浩宇的说法&#xff0c;2030年希望建成一个“上亿人愿意生活在其中的虚拟世界”&#xff0c;那也是八年以后的事情了。 原因很简单&#xff1a;技术不成…

如何在任何STM32上面安装micro_ros

就我知道的&#xff1a;micro-ros只能在特定的昂贵的开发板上面运行&#xff0c;但是偶然发现了这个文章&#xff0c;似乎提供了一个全新的方式来在ros2和单片机之间通讯&#xff0c;如果能够这样肯定也能够提高效率&#xff0c;但即使不行&#xff0c;使用串口库也应该比较简单…

【开题报告】基于微信小程序的个人健康监测系统的设计与实现

1.选题背景 随着人们生活水平的提高和健康意识的增强&#xff0c;个人健康管理越来越受到重视。然而&#xff0c;传统的健康管理方式存在信息不便捷、数据记录困难、监测分析不及时等问题。随着智能手机和移动互联网的普及&#xff0c;微信作为中国最大的社交平台之一&#xf…

机械设备展示预约小程序作业是什么

机械产品具备较高的市场需求度&#xff0c;由于具备批发和高价格属性&#xff0c;所以除了线下公司/门店外&#xff0c;线上主要以展示、咨询、获取线索转化等为主&#xff0c;当然线上直接销售也有很高的直接转化率。 那么商家通过【雨科】平台搭建机械设备展示预约小程序能实…

无需公网IP实现公网远程访问本地WebDAV服务

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

【虚拟机磁盘扩容】 centos7把/dev/sda的磁盘空间分给根目录

一、修改硬盘大小 关闭虚拟机→设置→硬盘→修改到自己需要的磁盘大小 二、查看根目录当前磁盘使用情况统计 df -h 注&#xff1a;虽然在第1步已经设置过新的磁盘大小为50G&#xff0c;但是这里明显可以看出总磁盘大小依旧是之前的20G&#xff0c;这就涉及到分区问题。 三、…

go基础语法10问(1)

1.使用值为 nil 的 slice、map会发生啥 允许对值为 nil 的 slice 添加元素&#xff0c;但对值为 nil 的 map 添加元素&#xff0c;则会造成运行时 panic。 // map 错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry i…

物联网安全芯片ACL16 采用 32 位内核,片内集成多种安全密码模块 且低成本、低功耗

ACL16 芯片是研制的一款32 位的安全芯片&#xff0c;专门面向低成本、低功耗的应用领域&#xff0c; 特别针对各类 USB KEY 和安全 SE 等市场提供完善而有竞争力的解决方案。芯片采用 32 位内核&#xff0c;片内集成多种安全密码模块&#xff0c;包括SM1、 SM2、SM3、 SM4 算法…

【Linux】less 命令使用

less命令 less 与 more 类似。 less是一个非常常用的文本查看工具&#xff0c;它可以用于查看任意大小的文本文件&#xff0c;支持滚动翻页、搜索、标记等功能。在本文中&#xff0c;我们将详细介绍less命令的用法、参数和实例&#xff0c;并对其背后的原理和相关技术进行简要…

thinkphp结合rabbitmq的使用案例

ThinkPHP是一款流行的PHP框架&#xff0c;RabbitMQ是一种消息中间件&#xff0c;在Web应用程序中使用它可以帮助处理异步任务和分发任务等。下面是一个ThinkPHP结合RabbitMQ的使用案例&#xff1a; 安装RabbitMQ 首先需要安装RabbitMQ。可以使用官方的RabbitMQ安装程序或者使…

基于深度学习YoloV8的火焰烟雾检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介YoloV8模型火焰烟雾检测系统模型训练实时检测 应用领域 二、功能三、系统四. 总结 一项目简介 # 基于深度学习YoloV8的火焰烟雾检测系统介绍 简介 深…

MSSQ 程序集使用方法

1.C# 写一个程序 1.1新建一个项目【类库【.Net FrameWork】 1.2编写代码 删除 namespace ApiSQLClass { } 代码如下&#xff1a;【具体调用API模式根据具体编写】 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.…

软包电池市场分析:中国市场现状及未来发展趋势

根据封装方式和形状不同&#xff0c;动力电池可分为方形电池、软包电池和圆柱电池。软包锂电池所用的关键材料(正极材料、负极材料、电解液及隔膜)与传统的钢壳、铝壳锂电池之间的区别不大&#xff0c;最大的不同之处在于软包电池需要铝塑膜&#xff0c;这也是软包锂离子电池中…

React 表单组件实现

一、介绍 本文将会基于react实现表单的功能&#xff0c;包括表单提交和跳转、表单验证、动态表单元素、动态内容加载。 二、使用教程 1.表单提交功能 export default class FormSubmit extends React.PureComponent{state {name: ""}handleNameChange evt > …

扭矩系数和摩擦系数应该关注哪一个?——SunTorque智能扭矩系统

螺栓&#xff0c;作为设备的主要连接方式之一&#xff0c;应用在多个关键部位&#xff0c;是关系到整个设备的安全可靠运行的保障。例如&#xff0c;在风电机组中高强度螺栓就是为了保证较高的预紧力&#xff1b;但是&#xff0c;螺栓的质量、装配方法、拧紧工具等等都会影响到…

class034 链表高频题目和必备技巧【算法】

class034 链表高频题目和必备技巧【算法】 code1 160. 相交链表 // 返回两个无环链表相交的第一个节点 // 测试链接 : https://leetcode.cn/problems/intersection-of-two-linked-lists/ 容器法&#xff1a;HashSet记录list1&#xff0c;遍历list2&#xff0c;看是否包含在Ha…

从零开始学Python网络编程:轻松搭建服务器和客户端

Python网络编程的基础知识是成为一名全面的Python开发者的关键一步。网络编程使我们能够创建各种类型的网络应用程序&#xff0c;从简单的客户端/服务器应用到复杂的Web应用和网络爬虫。 在本文中&#xff0c;我将会学习到Python网络编程的基础概念&#xff0c;包括套接字、服…

Spring boot -- 学习HttpMessageConverter

文章目录 1. Json格式数据获取2. 为什么返回Json格式的数据2.1 注解SpringBootAppliaction2.1.1 SpringBootConfiguration2.1.2 ComponentScan2.1.3 EnableAutoConfiguration2.1.3.1 HttpMessageConvertersAutoConfiguration2.1.3.2 WebMvcAutoConfiguration 2.2 注解RestContr…

自动加微信软件的成果,与涉及到的技术与代码分享

**一、引言** 在当今的数字化时代&#xff0c;自动化的工具和软件越来越普及&#xff0c;帮助人们更高效地完成工作。RPA&#xff08;Robotic Process Automation&#xff09;软件就是其中一种强大的自动化工具&#xff0c;它可以模拟人类的操作&#xff0c;实现对各种系统的自…

石油化工园区:安全管理工作中的挑战与措施

石油化工园区&#xff1a;安全管理工作中的挑战与措施 石油化工园区是一种设备设施多且结构复杂的工业园区&#xff0c;涉及到易燃易爆或有毒介质&#xff0c;同时园区内有大量的工作人员和工作车辆等动态参与要素。由于园区的特殊性质&#xff0c;安全管理工作显然具备较高的挑…