题目描述
删除字符串中出现次数最少的字符。
如果多个字符出现次数一样则都删除。
输入描述
一个字符串。
输出描述
删除字符串中出现次数最少的字符。
如果多个字符出现次数一样则都删除。
如果都被删除 则换为empty。
示例1
输入
abcdd
输出
dd
示例2
输入
aabbccdd
输出
empty
思路分析
- 先找到出现最少的次数。
- 然后把出现最小次数的字符从字符串剔除。
- 暂无其他更高效的思路。
参考代码
注:题目网上找的,参考代码是练习用,仅供参考,并不保证用例通过率。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* 删除字符串中出现次数最少的字符
*/
public class Test0017 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
char[] chars = str.toCharArray();
// 统计每个字符出现的次数
Map<Character, Integer> map = new HashMap<>();
for (char aChar : chars) {
if (map.containsKey(aChar)) {
map.put(aChar, map.get(aChar) + 1);
} else {
map.put(aChar, 1);
}
}
// 最小次数
int minTime = map.values().stream().min(Integer::compareTo).get();
// 替换掉出现最小次数的字符
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue().equals(minTime)) {
str = str.replaceAll(entry.getKey() + "", "");
}
}
// 输出结果
if (str.length() == 0) {
str = "empty";
}
System.out.println(str);
}
}