华为机试:删除字符串中出现次数最少的字符

题目描述

实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 

输入描述:

字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于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 }

 

posted @ 2017-09-22 12:13  zdtiio  阅读(387)  评论(0编辑  收藏  举报