31:删除字符串中出现次数最少的字符
Posted 每天都不一样
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了31:删除字符串中出现次数最少的字符相关的知识,希望对你有一定的参考价值。
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:删除字符串中出现次数最少的字符后的字符串。
输入例子:
abcdd
输出例子:
dd
思路:统计各个字符出现的次数,放在LinkedHashMap里,可以把values取出来放到一个collection里,直接调用collection的min()得到出现次数最小的次数;
然后根据整个char[]数组遍历,map里边
if(map.get(keys) != minIndex)
{
sb.append(keys);
}
进行过滤
1 import java.util.Collection; 2 import java.util.Collections; 3 import java.util.LinkedHashMap; 4 import java.util.Map; 5 /*题目描述 6 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 7 输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。 8 输出描述:删除字符串中出现次数最少的字符后的字符串。 9 输入例子: 10 abcdd 11 12 输出例子: 13 dd*/ 14 import java.util.Scanner; 15 16 public class Main { 17 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Scanner in = new Scanner(System.in); 21 while(in.hasNext()) 22 { 23 String inputString = in.next(); 24 char[] inputChar = inputString.toCharArray(); 25 Map<Character, Integer> map = new LinkedHashMap<>(); 26 for (char c : inputChar) { 27 if(map.containsKey(c)) 28 { 29 map.put(c, map.get(c)+1); 30 }else { 31 map.put(c, 1); 32 } 33 } 34 Collection<Integer> values = map.values();//工具类要常用! 35 int minIndex = Collections.min(values);//直接借助collections找最值! 36 StringBuffer sb = new StringBuffer(); 37 for (char keys : inputChar) { 38 if(map.get(keys) != minIndex) 39 { 40 sb.append(keys); 41 } 42 } 43 System.out.println(sb); 44 } 45 } 46 47 }
以上是关于31:删除字符串中出现次数最少的字符的主要内容,如果未能解决你的问题,请参考以下文章