1. 程式人生 > >給你一個任意字符串,你去打印出它所有字符出現的次數??

給你一個任意字符串,你去打印出它所有字符出現的次數??

letter bsp das tle text ntb 次數 etl 不重復

解決這個問題,首先得解決2個小問題:

1、因為是任意給定的任意字符串,你怎樣知道需要打印的次數?

2、用循環打印 怎樣不重復打印

上個栗子:

 1 package kimi;
 2 
 3 import java.util.LinkedHashMap;
 4 import java.util.Map;
 5 import java.util.Set;
 6 
 7 public class Text$$$$ {
 8     public static Map<String, Integer> map = new LinkedHashMap<>();
 9 
10     public
static Map<String, Integer> getLetterCountByString(String string) { 11 int length = string.length(); 12 String first = string.substring(0, 1); 13 string = string.replace(first, ""); 14 map.put(first, length - string.length()); 15 return string.length() > 0 ? getLetterCountByString(string) : map;
16 } 17 18 public static void main(String[] args) { 19 Map<String, Integer> map = getLetterCountByString("sdsdas s2334@@ 我睡覺哦 sda3 "); 20 Set<String> set = map.keySet(); 21 for (String key : set) { 22 System.out.println("key:" + key + " value:" + map.get(key));
23 } 24 } 25 }

第15行代碼運用遞歸的思想,不需要知道具體打印的次數,只要給定一個目標,利用三目運算符,比普通for循環減少了代碼量,

運行結果如下:

key:s     value:5
key:d     value:3
key:a     value:2
key:      value:4
key:2     value:1
key:3     value:3
key:4     value:1
key:@     value:2
key:我     value:1
key:睡     value:1
key:覺     value:1
key:哦     value:1

給你一個任意字符串,你去打印出它所有字符出現的次數??