java怎么實(shí)現(xiàn)統(tǒng)計(jì)一個(gè)字符串中字符出現(xiàn)的次數(shù)
問(wèn)題:假設(shè)字符串僅僅保護(hù)a-z 的字母,java怎么實(shí)現(xiàn)統(tǒng)計(jì)一個(gè)字符串中字符出現(xiàn)的次數(shù)?而且,如果壓縮后的字符數(shù)不小于原始字符數(shù),則返回。
處理邏輯:首先拆分字符串,以拆分出的字符為key,以字符出現(xiàn)次數(shù)為value,存入Map中。
源碼如下:
1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 5 public class TestCompress { 6 7 public static void main(String[] args) { 8 String str = "aaabbbcccdfb"; 9 compress(str); 10 } 11 12 public static void compress(String str) { 13 Map<String, Integer> count = new HashMap<String, Integer>(); 14 String[] myStrs = str.split(""); 15 for (int i = 0; i < myStrs.length; i++) { 16 int totalNum = 1; 17 String currentStr = myStrs[i]; 18 if (count.containsKey(currentStr)) { 19 totalNum = count.get(currentStr) + 1; 20 } 21 count.put(currentStr, totalNum); 22 } 23 int num = count.size(); 24 System.out.println("壓縮結(jié)果"); 25 if (num == myStrs.length) { 26 System.out.println("各個(gè)字母都不一樣,直接返回"); 27 System.out.println(str); 28 return; 29 } 30 String result = ""; 31 Iterator<Map.Entry<String, Integer>> it = count.entrySet().iterator(); 32 while (it.hasNext()) { 33 Map.Entry<String, Integer> entry = it.next(); 34 result = result + entry.getKey() + entry.getValue(); 35 } 36 System.out.println(result); 37 } 38 }
運(yùn)行結(jié)果:
1 壓縮結(jié)果 2 a3b4c3d1f1
讀后有收獲,小禮物走一走,請(qǐng)作者喝咖啡。
Buy me a coffee. ?Get red packets.作者:樓蘭胡楊
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但請(qǐng)注明原文鏈接,并保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。

浙公網(wǎng)安備 33010602011771號(hào)