題目描述
實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除。輸出刪除這些單詞后的字符串,字符串中其它字符保持原來的順序。
輸入描述:字符串只包含小寫英文字母, 不考慮非法輸入,輸入的字符串長度小於等於20個字節。
輸出描述:刪除字符串中出現次數最少的字符后的字符串。
輸入例子:
abcdd
輸出例子:
dd
思路:統計各個字符出現的次數,放在LinkedHashMap里,可以把values取出來放到一個collection里,直接調用collection的min()得到出現次數最小的次數;
然后根據整個char[]數組遍歷,map里邊
if(map.get(keys) != minIndex)
{
sb.append(keys);
}
進行過濾
1 import java.util.Collection; 2 import java.util.Collections; 3 import java.util.LinkedHashMap; 4 import java.util.Map; 5 /*題目描述 6 實現刪除字符串中出現次數最少的字符,若多個字符出現次數一樣,則都刪除。輸出刪除這些單詞后的字符串,字符串中其它字符保持原來的順序。 7 輸入描述:字符串只包含小寫英文字母, 不考慮非法輸入,輸入的字符串長度小於等於20個字節。 8 輸出描述:刪除字符串中出現次數最少的字符后的字符串。 9 輸入例子: 10 abcdd 11 12 輸出例子: 13 dd*/ 14 import java.util.Scanner; 15 16 public class Main { 17 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Scanner in = new Scanner(System.in); 21 while(in.hasNext()) 22 { 23 String inputString = in.next(); 24 char[] inputChar = inputString.toCharArray(); 25 Map<Character, Integer> map = new LinkedHashMap<>(); 26 for (char c : inputChar) { 27 if(map.containsKey(c)) 28 { 29 map.put(c, map.get(c)+1); 30 }else { 31 map.put(c, 1); 32 } 33 } 34 Collection<Integer> values = map.values();//工具類要常用! 35 int minIndex = Collections.min(values);//直接借助collections找最值! 36 StringBuffer sb = new StringBuffer(); 37 for (char keys : inputChar) { 38 if(map.get(keys) != minIndex) 39 { 40 sb.append(keys); 41 } 42 } 43 System.out.println(sb); 44 } 45 } 46 47 }