当前位置: 首页 > news >正文

华为OD机试真题 Java 实现【获取字符串中连续出现次数第k多的字母的次数】【2023Q1 100分】,附详细解题思路

在这里插入图片描述

一、题目描述

给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。

二、输入描述

  1. 第一行有一个子串(1<长度<=100),只包含大写字母;
  2. 第二行为 k的值;

三、输出描述

输出连续出现次数第k多的字母的次数。

四、解题思路

  1. 读取输入的字符串和 k 值;
  2. 将字符串转换为字符数组;
  3. 使用 HashMap 统计每个字符连续出现的次数;
  4. 遍历字符数组,记录当前字符和连续出现次数;
  5. 更新字符的最大连续出现次数;
  6. 将字符和最大连续出现次数存储在 HashMap 中;
  7. 将 HashMap 转换为 List,并按照值的降序进行排序;
  8. 判断 k 是否超过了 List 的长度,如果超过则输出 -1,否则输出第 k 个元素的值;
  9. 输出最终结果。

五、Java算法源码

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);char[] arr = (scanner.nextLine()).toCharArray();int k = scanner.nextInt();Map<Character, Integer> map = new HashMap<Character, Integer>();char current = arr[0];char temp;int count = 0;for (int i = 0; i < arr.length; i++) {temp = arr[i];if (temp == current) {// 相等,数量加1count++;} else {// 重置统计参数current = temp;count = 1;}// 记录if (map.containsKey(current)) {map.put(current, Math.max(map.get(current), count));} else {map.put(current, count);}}// 根据次数排序,从高到底List<Map.Entry<Character, Integer>> list = new ArrayList<>(map.entrySet());list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));// 打印第k多次的子串字母出现次数if (k > list.size()) {System.out.println(-1);} else {System.out.println(list.get(k - 1).getValue());}
}

六、效果展示

1、输入

qqwwweeeerrrrrtttttt
3

2、输出

第三长的字符的个数,很明显就是eeee,4。

3、说明

同一字母连续出现的最多的是t,6次;第二多的还是r,5次,第三多的就是e,一共4个e,所以输出4。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

http://www.lryc.cn/news/91035.html

相关文章:

  • 充分统计量和因子分解定理
  • M1 PD安装arm ubuntu及Docker
  • TCP协议的RST标志
  • 【软件质量与软件测试 白盒测试与黑盒测试】
  • JavaScript教程(高级)
  • C++进阶 —— 范围for(C++11新特性)
  • ELK +Filebeat日志分析系统
  • 万字解析PELT算法!
  • 腾讯云服务器端口怎么全开?教程来了
  • 深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13
  • 租售keysight E8257D 50G模拟信号发生器 销售/回收
  • 【C++】什么是函数模板/类模板?
  • 为什么是ChatGPT引发了AI浪潮?
  • 批处理文件(.bat)启动redis及任何软件(同理)
  • 深度学习求解稀疏最优控制问题的并行化算法
  • 牛客网项目—开发社区首页
  • uniapp水文【uniapp】
  • Java函数式接口
  • 安装libevent库
  • vue 截取字符串的方法
  • 可数集和不可数集
  • <Linux>《Linux 之 ps 命令详解大全(含实用命令)》
  • 华为OD机试真题 Java 实现【寻找关键钥匙】【2023Q1 100分】
  • 项目中遇到的一些问题总结(十三)
  • 药品存销信息管理系统数据设计与实现(包括需求分析,数据库设计,数据表、视图、存储过程等)
  • PyTorch-Loss Function and BP
  • centos docker安装mysql8
  • Java中synchronized锁的深入理解
  • Find My资讯|iOS17将重点改进钱包、Find My、SharePlay和AirPlay等功能
  • 什么是webSocket?