华为机试:删除字符串中出现次数最少的字符
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1
输入
abcdd
输出
dd
Java:用两个数组来记录各个字符的个数,一个用来排序找出最小的字符出现次数,一个用来决定是否输出当前字符。
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 Scanner sc=new Scanner(System.in); 8 while(sc.hasNext()){ 9 String s = sc.nextLine(); 10 int[] state = new int[26]; 11 int[] temp_state = new int[26]; 12 for(int i = 0; i < s.length(); i++){ 13 state[s.charAt(i)-'a']++; 14 temp_state[s.charAt(i)-'a']++; 15 } 16 Arrays.sort(temp_state); 17 int num = 0; 18 for(int i = 0; i < temp_state.length; i++){ 19 if(temp_state[i]!=0){ 20 num = temp_state[i]; 21 break; 22 } 23 } 24 for(int i = 0; i < s.length(); i++){ 25 if(state[s.charAt(i)-'a']!=num){ 26 System.out.print(s.charAt(i)); 27 } 28 } 29 System.out.println(); 30 } 31 sc.close(); 32 } 33 34 }