华为OD机试真题B卷 Java 实现【删除字符串中出现次数最少的字符】,附详细解题思路

news/2024/7/20 17:18:38 标签: java, 华为od, 开发语言, 学习

在这里插入图片描述

一、题目描述

删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除。

二、输入描述

一个字符串。

三、输出描述

删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除,如果都被删除 则换为empty。

四、解题思路

  1. 读取输入的字符串;
  2. 将字符串转换为字符数组;
  3. 使用 HashMap 统计每个字符出现的次数,字符作为键,出现次数作为值;
  4. 找出出现次数最少的字符,即最小次数 minTime,使用 Stream 的 min() 方法取得最小值;
  5. 遍历 HashMap,将出现次数等于 minTime 的字符替换为空字符串;
  6. 如果替换后的字符串长度为 0,则将其置为 “empty”;
  7. 输出最终结果。

五、Java算法源码

java">public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String line = scanner.nextLine();
    char[] arr = line.toCharArray();

    // 统计每个字符出现的次数
    Map<Character, Integer> map = new HashMap<Character, Integer>();
    for (char c : arr) {
        if (map.containsKey(c)) {
            map.put(c, map.get(c) + 1);
        } else {
            map.put(c, 1);
        }
    }

    // 最小次数
    int minTime = map.values().stream().min(Integer::compareTo).get();

    // 替换掉出现最小次数的字符
    for (Map.Entry<Character, Integer> entry : map.entrySet()) {
        if (entry.getValue().equals(minTime)) {
            line = line.replaceAll(entry.getKey() + "", "");
        }
    }

    // 输出结果
    if (line.length() == 0) {
        line = "empty";
    }
    System.out.println(line);
}

六、效果展示

1、输入

dftww

2、输出

ww

3、思路

  1. 先找到出现最少的次数;
  2. 然后把出现最小次数的字符从字符串剔除;
  3. 暂无其他更高效的思路;

在这里插入图片描述


🏆本文收录于,华为OD机试2023(Java)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.niftyadmin.cn/n/458762.html

相关文章

1分钟了解volta,管理node版本。

如何使用volta 为啥使用volta或nvm来管理node版本呢&#xff1f;假如你需要同时维护多个node项目&#xff0c;那你怎么办呢&#xff1f;下面说几个可行的方案: 用volta安装node。用volta查询查看当前环境依赖&#xff0c;顺带可以查到本项目已经安装的依赖。用volta指定本项目的…

leetcode300. 最长递增子序列(动态规划-java)

最长递增子序列 leetcode300. 最长递增子序列题目描述解题思路代码演示: 二分法改进(N * logN)动态规划专题 leetcode300. 最长递增子序列 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequenc…

20230622作业:字符设备驱动内部实现原理及流程

1.1字符设备驱动内部实现原理 1>用户打开设备open("~/dev/mycdev",O_RDWR);("路径"&#xff0c;打开方式)2>在内核的虚拟文件系统层会同步执行sys_open函数,实现如下操作3>根据open函数的路径&#xff0c;找到struct inode结构体4>在struct…

postgresql | 数据库| 生成2000W条的简单测试表

前言&#xff1a; 数据库学习的过程中&#xff0c;很可能需要数据量比较大的表来进行模拟测试&#xff0c;那么&#xff0c;测试表的创建需要遵循的是贴近实际的生产环境&#xff0c;尽量的模仿实际的生产环境。 因此&#xff0c;学习数据库的时候&#xff0c;快速的创建一个…

【前端JS交互篇】ECMA核心语法 ——常量、变量、数据类型、各种弹框

一、javascript简介 1.1 Javascript简史 在WEB日益发展的同时&#xff0c;网页的大小和复杂性不断增加&#xff0c;受制于网速的限制&#xff0c;为完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负担&#xff0c;当时走在技术革新最前沿的Netscape&#xff08;网…

spring框架-循环依赖问题(二)

文章目录 什么是循环依赖解决循环依赖的办法知识扩展 什么是循环依赖 两个或多个类之间存在彼此依赖的情况,形成一个循环依赖链 代码&#xff1a; 单例bean的循环依赖&#xff1a; 先了解Bean的生命周期&#xff1a;1.实例化 2.初始化、3.使用 4.销毁 详细了解Bean生命周期…

浅尝Transformer和LLM

文章目录 TransformerTransformer的衍生BERTPre-trainingBERT与其他方法的关系怎么用BERT做生成式任务&#xff1f; GPTPre-trainingFine-Tuning Transformer工具开源库特点 LLM系列推理服务 大语言模型势不可挡啊。 哲学上来说&#xff0c;语言就是我们的一切&#xff0c;语言…

七彩虹CN600+Meetiger N10C测评

七彩虹CN600这款M.2固态硬盘的参数就不多说了 本期采用为512版本 迷虎品牌&#xff0c;英文名Meetiger&#xff0c;Meetiger/迷虎品牌成立于2012年&#xff0c;品牌迷虎产品主要有硬盘底座,保护盒,硬盘座,移动硬盘盒子,硬盘盒子,... 以下就是本期的硬盘盒 当这两样东西在一起…