题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
扫描二维码关注公众号,回复:
599620 查看本文章
删除字符串中出现次数最少的字符后的字符串。
输入例子:
igwclcccc
输出例子:
ccccc
Java实现:
private static void fun() { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String str = sc.nextLine(); char[] c = str.toCharArray(); Map<Character, Integer> map = new HashMap<Character, Integer>(); for (int i = 0; i < str.length(); i++) { if (map.containsKey(c[i])) { map.put(c[i], map.get(c[i]) + 1); } else { map.put(c[i], 1); } } int min = (Integer) getMinValue(map); String minStr = ""; Set<Entry<Character, Integer>> set = map.entrySet(); for (Entry<Character, Integer> mn : set) { if (min == mn.getValue()) { minStr += mn.getKey(); } } String s = ""; for (int i = 0; i < c.length; i++) { if (minStr.contains(String.valueOf(c[i]))) { c[i] = '\u0000'; } s += String.valueOf(c[i]); } System.out.println(s.replaceAll("\u0000", "")); } sc.close(); } /** * 求Map<K,V>中Value(值)的最小值 * @param map * @return */ public static Object getMinValue(Map<Character, Integer> map) { if (map == null) { return null; } Collection<Integer> c = map.values(); Object[] obj = c.toArray(); Arrays.sort(obj); return obj[0]; }