利用list的排序来得到最小次数的字符,其中需要注意对map做深拷贝!卡了很久,因为不知道如何处理最小这一点
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String str = in.nextLine();
List finalList = deLeast(str);
for(int i = 0;i<str.length();i++){
if(finalList.contains(str.charAt(i))){
System.out.print(str.charAt(i));
}
}
}
}
static List deLeast(String str){
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(int i = 0;i<str.length();i++){
char c = str.charAt(i);
if(map.containsKey(c)){
int num = map.get(c);
map.put(c,++num);
}else{
map.put(c,1);
}
}
List<Integer> list = new ArrayList<Integer> (map.values());
Collections.sort(list);
Map<Character,Integer> mapCopy = new HashMap<Character,Integer>(map);
for(char charAll : map.keySet()){
if(map.get(charAll)==list.get(0)){
mapCopy.remove(charAll);
}
}
List<Character> listChar = new ArrayList<Character>(mapCopy.keySet());
// for(int i = 0;i<list.size()-1;i++){
// map.remove()
// if(list.get(i)!=list.get(i+1)){
// list.removeIf(e -> e==)
// }
// }
// int min = list.get(0);
// char[] chars = map.indexOf(min);
// List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
// //利用Collections的sort方法对list排序
// Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
// @Override
// public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
// //正序排列,倒序反过来
// return o1.getValue() - o2.getValue();
// }
// });
return listChar;
}
}
实际上直接.values循环遍历得到最小即可,以及重新用stringbuilder来重建一个数组:来源-秋榆梧桐
public String delete(String str) {
// Map记录每个字母的次数
Map<Character, Integer> map = new HashMap<>();
for (char ch : str.toCharArray()) {
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
// 快速找出最少次数
int min = Integer.MAX_VALUE;
for (int times : map.values()) {
min = Math.min(min, times);
}
StringBuilder res = new StringBuilder();
for (char ch : str.toCharArray()) {
if (map.get(ch) != min) {
res.append(ch);
}
}
return res.toString();
}
标签:字符,ch,map,int,min,list,字符串,new,HJ23
From: https://www.cnblogs.com/xytang-mini-juan/p/18155874