博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算字符串中每种字符出现的次数[Dictionary<char,int>泛型集合用法]
阅读量:6610 次
发布时间:2019-06-24

本文共 1979 字,大约阅读时间需要 6 分钟。

  有一道经典的面试题: 统计 welcome to china中每个字符出现的次数,不考虑大小写。

        第一个出现在脑海里的想法是:

    1. 将字字符串转换成 char数组;

    2. 用 for循环遍历每个字符,根据switch-case语句来逐一判断。

    3. 再建立一个 int 数组来接收判断后的结果,最后 for 循环输出。

  这样做的话,就要写很多个case语句来判断每个字符出现的情况。假如题目改变一下,这个字符串由用户输入,而不是固定的,那么要写的case语句会更多,恐怕整张试卷都写不下了。就算你写出来了,面试官看到了岂不是当场走人,汗汗汗汗。这绝对不是最佳的解法。

  

  使用泛型集合来解决吧。

  解题思路:

    1. 假如不考虑大小写的话,就要先将字符串中所有的字母先转换为小写(同理转换为大写也行)

    2. 将这个字符串转换为字符数组

    3. 建立一个键值对集合 Dictionary<char, int> dicChars ,字符作为 key ,字符出现的次数作为 value

    4. 循环遍历字符串数组,如果某个字符在dicChars中没有出现过,就将它插入集合中,出现的次数设为 1

                如果某个字符在dicChars中已经出现过,就将它出现的次数加1即可

                如果要忽略空格的话,就要先判断遇到的是否是空格,如果是的话,就continue,跳过吧。

    5. 通过foreach循环,以KeyValuePair<char,int> 来遍历集合,将每个字符出现的次数显示出来 

1             //统计 welcome to china中每个字符出现的次数,不考虑大小写 2             string str = "welcome to china"; 3             str = str.ToLower(); //先将所有字母都转为小写,以此忽略大小写 4             char[] charArray = str.ToCharArray(); 5             Dictionary
dicChars = new Dictionary
(); 6 7 for (int i = 0; i < charArray.Length; i++) 8 { 9 char key = charArray[i];10 //忽略空格11 if (key == ' ')12 {13 continue;14 }15 16 if (!dicChars.ContainsKey(key)) //如果不包含这个字符,则将字符加入集合中17 {18 dicChars.Add(key, 1);19 }20 else21 {22 dicChars[key]++;23 }24 }25 26 Console.WriteLine("在 welcome to china中每个字符出现的次数:");27 foreach (KeyValuePair
kv in dicChars)28 {29 Console.WriteLine("{0}出现了{1}次 ", kv.Key, kv.Value);30 }
View Code

  

  最后总结:

    个人认为,遇到一个新的问题的时候,关键是思路,把思路一步一步理顺了,就像我们老师说的那样,知道你要干什么,想好怎样去做,最后再去写代码。不要

  一上来就敲代码,思路都没搞清楚呢,最后肯定是问题多多。

转载于:https://www.cnblogs.com/lcxBlog/p/4830629.html

你可能感兴趣的文章
字符编码06
查看>>
django之表单及模板渲染、全局钩子、局部钩子函数-67
查看>>
SQL总结(二)连表查询
查看>>
【转载】FPGA功耗的那些事儿
查看>>
delphi 获取可执行文件的当前路径
查看>>
求圆的面积
查看>>
自定义控件
查看>>
HDOJ-4006/(大连网赛1006)- The kth great number 剖析
查看>>
[Codeforces Round #452 (Div. 2)] Splitting in Teams
查看>>
leetcode 51: Generate Parentheses
查看>>
IE6 for WIN8
查看>>
Java gc机制
查看>>
python xml.etree ElementTree解析 编辑 xml
查看>>
复利计算5.0-----结对编程
查看>>
hdu 1255 覆盖的面积(求覆盖至少两次以上的面积)
查看>>
sb 讲解 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
查看>>
06-Linux RPM 命令参数使用详解
查看>>
Tone Mapping算法系列一:基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。...
查看>>
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
查看>>
[每日小结] 浅谈堆模拟费用流
查看>>