计算字符串中每种字符出现的次数(用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

 

 

posted @ 2013-10-09 08:54  不是归人是过客  阅读(586)  评论(0编辑  收藏  举报