计算字符串中每种字符出现的次数(用Dictionary实现)
------- Windows Phone 7手机开发 黑马程序员 .Net培训 期待与您交流! -------
这是基础测试中一道题。题目如下:计算字符串中每种字符出现的次数。“Welcome to Chinaworld”,不区分大小写,打印“W 2”“e 2”“l 3”……
咋看有点不明白,但想了想实现该题的思路有很多种,在这不一一说明了。这是我的实现思路:大牛们勿喷。
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //将字符串转换为小写 6 string str = "Welcome to Chinaworld".ToLower(); 7 //将字符串转换成字符数组 8 char[] ch = str.ToCharArray(); 9 //用来计数 10 int count = 0; 11 //键值对,记录每个字符出现的次数 12 Dictionary<char, int> dic = new Dictionary<char, int>(); 13 //遍历字符数组 14 for (int i = 0; i < ch.Length; i++) 15 { 16 for (int j = i; j < ch.Length; j++) 17 { 18 //比较两个字符是否相等,相等加count加1 19 if (ch[i] == ch[j]) 20 { 21 count++; 22 } 23 } 24 //判断字典的键中是否已经存在该键 25 if (!dic.ContainsKey(ch[i])) 26 { 27 dic.Add(ch[i], count); 28 } 29 //计数器清空 30 count = 0; 31 } 32 //遍历dictionary对象 33 foreach (KeyValuePair<char,int> kvp in dic) 34 { 35 Console.WriteLine("字符:{0}, 出现次数:{1}", kvp.Key, kvp.Value); 36 } 37 Console.ReadKey(); 38 }
总的来说每个问题都有不同的解决方法,重要的是自己的思路一定要清晰。说实话,做这么一个简单的问题,还使我思考了好久,使用了很多方法,一开始就使用了Dictionary类,但自己思路并不清晰,经过不断的尝试,最后才想到了不应该把简单问题复杂化,就想最基础的结构解决。
2013-10-09