描述 | |
---|---|
知识点 | 字符串 |
运行时间限制 | 0M |
内存限制 | 0 |
输入 | 字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。 |
输出 | 删除字符串中出现次数最少的字符后的字符串。 |
样例输入 | abcdd |
样例输出 | dd |
package com.lp;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
char [] arr = input.toCharArray();
int hash[] = new int[26];
for(int i=0;i<26;i++) hash[i]=Integer.MAX_VALUE;
//用hash表统计各个单词出现的次数
for(int i=0;i<arr.length;i++){
hash[arr[i]-'a']++;
}
Stack<Character> stack = new Stack<>();
int min = Integer.MAX_VALUE;
for(int i=0;i<26;i++){
if(min>hash[i]){
stack.clear();//之前加入的不是最小的,清空栈
min=hash[i];
stack.add((char) (i+'a'));
}else if(min==hash[i]) {//出现次数最少的可能有多个放在栈里面
stack.add((char) (i+'a'));
}
}
StringBuilder sb= new StringBuilder();
for(int i=0;i<arr.length;i++){
if(!stack.contains(arr[i]))
sb.append(arr[i]);
}
System.out.println(sb.toString());
}
}