题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
import java.util.*;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String input = in.nextLine();
Map<String, Integer> v = count(input);
Integer min = v.values().stream().min((o1, o2) -> o1.compareTo(o2)).get();
Set<String> repeated = v.entrySet().stream().filter(x->{
return x.getValue().equals(min);
}).map(x->{
return x.getKey();
}).collect(Collectors.toSet());
char[] chars = input.toCharArray();
StringBuilder sb = new StringBuilder();
for(char c:chars){
if(repeated.contains(String.valueOf(c))){
continue;
}
sb.append(String.valueOf(c));
}
System.out.println(sb.toString());
}
}
public static Map<String, Integer> count(String val) {
Map<String, Integer> m = new HashMap<>();
char[] chars = val.toCharArray();
for (char c : chars) {
if (!m.containsKey(String.valueOf(c))) {
m.put(String.valueOf(c), 1);
} else {
Integer v = m.get(String.valueOf(c)) + 1;
m.put(String.valueOf(c), v);
}
}
return m;
}
}
