题目描述:
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
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<>的中间变量表示哈希表的一个条目