删除字符串中出现次数最少的字符

删除字符串中出现次数最少的字符

题目描述

实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。

输入描述:

字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于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];
	}

猜你喜欢

转载自injavawetrust.iteye.com/blog/2315698