HJ23 删除字符串中出现次数最少的字符

描述

实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。

数据范围:输入的字符串长度满足 1≤n≤20  ,保证输入的字符串中仅出现小写字母

输入描述:

字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。

输出描述:

删除字符串中出现次数最少的字符后的字符串。

示例1

输入:aabcddd

输出:aaddd

解题思路 

    这里就是要找出字符频率最低的字符删除。 所以统计字符频率的集合就少不了。这里可以考虑Map<Character,Integer>,正好把每个字符都统计。

    {(a,2),(b,1),(c,1),(d,3)}

    接着,我们无需排序,因为这里频率最低并不只是有一个可能,从示例1可以看出,频率最低的可能有两个字符b、c。我们只需要找到这个最少次数即可。

    怎么找,就是遍历Map.Entry<Character,Integer>对象,找到entry.getValue()最小值。

    minCount = 1

    找到了最小值,我们就可以去遍历字符串,然后通过替换,或者删除频率次数是最小值的字符。

    但是机考题,我们只需要打印正确的结果,不用得到最终的字符串,然后打印,所以最后删除字符串中出现最少的字符串,可以理解为打印频率不是最小的字符。 

 代码

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String str = scanner.next();deleteCharacter(str);}scanner.close();}public static void deleteCharacter(String str) {// 统计字符频率Map<Character, Integer> count = new HashMap<>();char[] chs = str.toCharArray();for (int i = 0; i < chs.length; i++) {Character ch = chs[i];int num = count.get(ch) == null ? 0 : count.get(ch);count.put(ch, num + 1);}// 最小次数最大值应该是字符串长度,而不是Integer.MAX_VALUE或者21int minCount = str.length();for (Map.Entry<Character, Integer> entry : count.entrySet()) {if (entry.getValue() < minCount)minCount = entry.getValue();}// 结果处理这里没有直接得到最终字符串,而是按照要求打印了字符串for (int i = 0; i < chs.length; i++) {if (minCount != count.get(chs[i]))System.out.print(chs[i]);}System.out.println();}
}

     提交通过:

    顺便提一下,最后一步如果非要得到最终删除之后的字符串, 可以考虑使用一个临时字符串来获得这个新的字符串:

String tmp = "";
for(int i=0;i<chs.length;i++) {if(minCount!=count.get(chs[i]))tmp = tmp+chs[i];
}
return tmp;

    也可以根据字符串的特点,遍历字符数组,将字符串频率最小的字符替换为空格" ",遍历完成,最后将空格" "全部替换为空"",相当于删除了频率最小的字符。 

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

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

相关文章

vue使用wangEditor

vue版本2.0&#xff1b;editor5.1.23版本&#xff1b;editor-for-vue&#xff1a;1.0.2版本 api文档入口 效果图 点击查看如何封装 安装步骤入口 npm install wangeditor/editor --savenpm install wangeditor/editor-for-vue --save代码&#xff08;未封装过的&#xff09;…

Layui快速入门之第三节栅格布局

目录 一&#xff1a;栅格布局的基本概念 二&#xff1a;栅格布局规则 三&#xff1a;始终等比例水平排列案例 四&#xff1a;响应式规则 五&#xff1a;移动设备、桌面端的组合响应式展现案例 六&#xff1a;移动设备、平板、桌面端的复杂组合响应式展现案例 七&#xf…

day35 线程

程序&#xff1a;是为了完成特定的任务&#xff0c;用某种语言编写的一组有序指令的集合&#xff0c;是一段静态的代码 进程&#xff1a;是程序的一次执行过程 线程&#xff1a;线程是进程中的一个执行单元 线程是调度和执行的单位 处理器和线程间的关系 创建线程(重点) 创建…

大数据课程L5——网站流量项目的实时业务系统搭建

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握网站流量项目的 Flume—>Kafka 连通; ⚪ 掌握网站流量项目的实时业务系统搭建; 一、Flume—>Kafka 连通 1. 实现步骤 1. 启动三台服务器。 2. 启动 Zookeeper 集群。 执行指…

2023国赛 B题论文 基于多波束测深技术的海洋探测建模与分析

因为一些不可抗力&#xff0c;下面仅展示小部分论文&#xff0c;其余看文末 一、问题重述 1.1 问题背景 海洋测深是测定水体深度与海底地形的重要任务&#xff0c;有两种主要技术&#xff1a;单波束测深与多波束测深。单波束适用于简单任务&#xff0c;但多波束可提供更精确…

【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献

【2023高教社杯】B题 多波束测线问题 问题分析、数学模型及参考文献 1 题目 1.1 问题背景 多波束测深系统是利用声波在水中的传播特性来测量水体深度的技术&#xff0c;是在单波束测深的基础上发展起来的&#xff0c;该系统在与航迹垂直的平面内一次能发射出数十个乃至上百个…

【C刷题】day1

一、选择题 1.正确的输出结果是 int x5,y7; void swap() { int z; zx; xy; yz; } int main() { int x3,y8; swap(); printf("%d,%d\n"&#xff0c;x, y); return 0; } 【答案】&#xff1a; 3&#xff0c;8 【解析】&#xff1a; 考点&#xff1a; &#xff…

Linux DirtyPipe权限提升漏洞 CVE-2022-0847

Linux DirtyPipe权限提升漏洞 CVE-2022-0847 漏洞描述 CVE-2022-0847-DirtyPipe-Exploit CVE-2022-0847 是存在于 Linux内核 5.8 及之后版本中的本地提权漏洞。攻击者通过利用此漏洞&#xff0c;可覆盖重写任意可读文件中的数据&#xff0c;从而可将普通权限的用户提升到特权…

(其他) 剑指 Offer 67. 把字符串转换成整数 ——【Leetcode每日一题】

❓ 剑指 Offer 67. 把字符串转换成整数 难度&#xff1a;中等 写一个函数 StrToInt&#xff0c;实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先&#xff0c;该函数会根据需要丢弃无用的开头空格字符&#xff0c;直到寻找到第一个非空格的字符为…

Mybatis复杂查询及动态SQL

文章目录 一. 较复杂的查询操作1. 参数占位符#{}和${}2. SQL注入3. like查询4. resultType与resultMap5. 多表查询5.1. 一对一表映射5.2. 一对多表映射 二. 动态SQL1. if标签2. trim标签3. where标签4. set标签5. foreach标签 本篇中使用的数据表即基础映射类都是基于上一篇博客…

【C++进阶】多态

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

Unity实现2D游戏跟随摄像机(平滑移动)

文章目录 玩家角色脚本字段跟随逻辑 完整代码其他相关文章连接 玩家角色 首先创建一个可用的玩家角色&#xff0c;写好移动逻辑&#xff0c;如果要使用在Unity商店中购买的资源&#xff0c;可以点击Window菜单栏> Package Manager选项&#xff0c;来打开Package Manager窗口…

应急响应-Windows挖矿实战

0x00 主机表现 windows主机cpu拉满&#xff0c;主机卡顿&#xff0c;初步判断为中了挖矿病毒 0x00 处置 通过cpu拉满状态&#xff0c;定位初步的进程文件&#xff0c; 通过进程得到的文件上传沙箱&#xff0c;结果显示为恶意文件&#xff0c; 定位到文件夹&#xff0c; 存…

【C++ Core Guidelines解析】深入理解现代C++的特性和原理

文章目录 &#x1f468;‍⚖️《C Core Guidelines解析》的主要观点&#x1f468;‍&#x1f3eb;《C Core Guidelines解析》的主要内容&#x1f468;‍&#x1f4bb;作者介绍 &#x1f338;&#x1f338;&#x1f338;&#x1f337;&#x1f337;&#x1f337;&#x1f490;&a…

蚂蚁开源编程大模型,提高开发效率

据悉&#xff0c;日前蚂蚁集团首次开源了代码大模型 CodeFuse&#xff0c;而这是蚂蚁自研的代码生成专属大模型&#xff0c;可以根据开发者的输入提供智能建议和实时支持&#xff0c;帮助开发者自动生成代码、自动增加注释、自动生成测试用例、修复和优化代码等kslouitusrtdf。…

3D封装技术发展

长期以来&#xff0c;芯片制程微缩技术一直驱动着摩尔定律的延续。从1987年的1um制程到2015年的14nm制程&#xff0c;芯片制程迭代速度一直遵循摩尔定律的规律&#xff0c;即芯片上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。但2015年以后&#xff0c;芯片制…

ffmpeg-android studio创建jni项目

一、创建native项目 1.1、选择Native C 1.2、命名项目名称 1.3、选择C标准 1.4、项目结构 1.5、app的build.gradle plugins {id com.android.application }android {compileSdk 32defaultConfig {applicationId "com.anniljing.ffmpegnative"minSdk 25targetSdk 32…

使用Vue + axios实现图片上传,轻松又简单

目录 一、Vue框架介绍 二、Axios 介绍 三、实现图片上传 四、Java接收前端图片 一、Vue框架介绍 Vue是一款流行的用于构建用户界面的开源JavaScript框架。它被设计用于简化Web应用程序的开发&#xff0c;特别是单页面应用程序。 Vue具有轻量级、灵活和易学的特点&#xf…

AI系统论文阅读:SmartMoE

提出稀疏架构是为了打破具有密集架构的DNN模型中模型大小和计算成本之间的连贯关系的——最著名的MoE。 MoE模型将传统训练模型中的layer换成了多个expert sub-networks&#xff0c;对每个输入&#xff0c;都有一层special gating network 来将其分配到最适合它的expert中&…

【C#实战】控制台游戏 勇士斗恶龙(3)——营救公主以及结束界面

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;最近开始正式的步入学习游戏开发的正轨&#xff0c;想要通过写博客的方式来分享自己学到的知识和经验&#xff0c;这就是开设本专栏的目的。希望…