题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
http://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
public class test{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String str = scanner.nextLine();
char[] chars = str.toCharArray();
//统计每个字母的数量
HashMap<Character, Integer> map = new HashMap<>();
//这里的for (char value : chars)就是定义一个遍历字符aChar。让它分别等于字符串数组chars里面的各个字符,然后执行for循环里面的内容,
// 当value被赋值为chars里面所有字符各一次后,就会退出这个循环。
for (char value : chars) {
map.put(value, (map.getOrDefault(value, 0) + 1));
//getOrDefault()方法获取指定key对应value,如果找不到key,就会返回设置的默认值,语法为:hashmap.getOrDefault(Object key, V defaultValue)
//这句话的意思是:如果没有这个值,就用默认值+1;如果有这个值,就用已经存好的值+1;
}
//valuse()方法,返回HashMap中所有值所组成的collection view(集合试图)
Collection<Integer> values = map.values();
//找到数量最少的字符数量
Integer min = Collections.min(values);
//Collection.max()和Collection.min()方法来查找数组中的最大值和最小值
//用空字符串替换该字母
for (Character key : map.keySet()) {
if (map.get(key) == min){
str=str.replaceAll(String.valueOf(key), "");
//对str进行更改,必须进行接收,否则输出的还是之前的值。
}
//String.valueOf()可以把char类型转成String类型
}
System.out.println(str);
}
}
}