题目描述:
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
Java实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String in = sc.nextLine();
StringBuffer out = new StringBuffer();
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < in.length(); i++) {
if (map.containsKey(in.charAt(i))) {
map.put(in.charAt(i),map.get(in.charAt(i))+1);
}else {
map.put(in.charAt(i),1);
}
}
int min = Integer.MAX_VALUE;
for (Map.Entry<Character, Integer> e: map.entrySet()) {
if (e.getValue() < min)
min = e.getValue();
}
for (int i = 0; i < in.length(); i++) {
if (map.get(in.charAt(i)) != min) {
out.append(in.charAt(i));
}
}
System.out.println(out.toString());
}
}
}
知识点:
- 使用StringBuffer类的append()方法来构建新的字符串
- 遍历一个HashMap,生成一个Map.Entry<>的中间变量表示哈希表的一个条目