题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.lang.StringBuilder;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String a = in.next();
System.out.println(getRemoveMinStr(a));
}
}
private static String getRemoveMinStr(String str){
Map<Character,Integer> map= new HashMap<Character,Integer>();
for(int i = 0;i<str.length();i++){
//利用map找出最少出现的字符的次数,然后用次数找到key,把原来的字符串中包含map key的字符删掉
if(!map.containsKey(str.charAt(i))){
map.put(str.charAt(i),1);
}else{
map.replace(str.charAt(i),map.get(str.charAt(i)),map.get(str.charAt(i))+1);
}
}
int min = 20;
for(Character key:map.keySet()){
if(map.get(key)<min){
min = map.get(key);
}
}
StringBuilder sb = new StringBuilder();
for(Character key:map.keySet()){
if(map.get(key)==min){
sb.append(key);
}
}
for(char c:sb.toString().toCharArray()){
str = str.replace(c+"","");
}
return str;
}
}