华为OD机试 - 删除字符串中出现次数最少的字符 (Java 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。
专栏导读
本专栏收录于 《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》 。
刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
删除字符串中出现次数最少的字符
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
数据范围:输入的字符串长度满足 1≤n≤20
保证输入的字符串中仅出现小写字母。
输入描述:
字符串只包含小写英文字母,不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1
输入
aabcddd
输出
aaddd
Java 编程
package cn.net.javapub.demo2.demo;/*** @author: shiyuwang* @url: http://javapub.net.cn*/import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String s = scanner.nextLine();char[] chars = s.toCharArray();//统计每个字母的数量HashMap<Character, Integer> map = new HashMap<>();for (char aChar : chars) {map.put(aChar, (map.getOrDefault(aChar, 0) + 1));}//找到数量最少的字符数量Collection<Integer> values = map.values();Integer min = Collections.min(values);//用空字符串替换该字母for (Character character : map.keySet()) {if (map.get(character) == min) {s = s.replaceAll(String.valueOf(character), "");}}System.out.println(s);}}
}
展示效果:
🏆下一篇: 华为OD机试 - 汽水瓶 (Java 2024 E卷 100分)
🏆本文收录于, 搬砖工逆袭Java架构师
刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。