计算字符串中每种字符出现的次数[Dictionarychar,int泛型集合用法]
当时看到这个题目,我的第一想法就是:
1.先判断用户输入的是否是数字,用if-else语句来判断;
2.将用户输入的数字字符串转换成char数组;
3.用for循环遍历每个字符,根据switch-case语句来逐一判断。
4.再建立一个int数组来接收判断后的结果,最后for循环输出。
class Program { static void Main(string[] args) { //计算用户输入的一串数字中每个数字出现的次数 Console.WriteLine("请输入一串数字"); string str = Console.ReadLine(); //将字符串转换为字符数组 char[] chnum = str.ToCharArray(); #region 判断用户输入的是否是数字 for (int i = 0; i < chnum.Length; i++) {//判断每一个字符是否是数字 通过char的方法来判断 if (!char.IsNumber(chnum[i])) { Console.WriteLine("您的输入有误,请输入数字"); Console.ReadKey(); return; } } #endregion //定义一个新的数组来保存计数 int[] count=new int[9]; #region for循环遍历 //for循环遍历 for (int i = 0; i < chnum.Length; i++) { switch (chnum[i]) { case '1': count[0]++; break; case '2': count[1]++; break; case '3': count[2]++; break; case '4': count[3]++; break; case '5': count[4]++; break; case '6': count[5]++; break; case '7': count[6]++; break; case '8': count[7]++; break; case '9': count[8]++; break; } } #endregion #region 循环输出 for (int i = 0; i < count.Length; i++) { Console.WriteLine("含有的数字 {0} 的个数是:{1}", i + 1, count[i]); } #endregion Console.ReadKey(); } }运行效果如下:
![计算字符串中每种字符出现的次数[Dictionarychar,int泛型集合用法]](https://www.ym97.com/uploads/allimg/201229/1012333013_0.jpg)
不过,这种方法有两个缺点就是,如果用户输入的不是数字(如字母或符号等),程序会提示错误,并退出;再者,也会统计出用户没有输入过的数字的个数为0个,如果某些时候不想知道没有输入的数字的个数,这种解法很不合适,而且代码修改起来也很复杂。
新解法: 泛型集合
碰巧这几天接触了泛型集合,没想到用Dictionary来解这道题是那么的简单。
代码如下:
class Program { static void Main(string[] args) { Console.WriteLine("请输入数字"); string numbers = Console.ReadLine(); //创建集合 键 为数字 char类型 值为每个数字出现的次数 int类型 Dictionary<char, int> dict = new Dictionary<char, int>(); //将数字字符串转换为单个字符数组 char[] chs = numbers.ToCharArray(); for (int i = 0; i < chs.Length; i++) { //判断是否是数字 用到char的isnumber方法 if (char.IsNumber(chs[i])) { //如果键中已含有该数字,则将其对应的值+1,否则不存在,加入键中 值为1 if (!dict.ContainsKey(chs[i])) { //将每个数字字符作为键 存入 键值对中, 值初始为1 dict.Add(chs[i], 1); } else { //值+1 dict[chs[i]]++; } } } //循环遍历键值对输出 foreach (KeyValuePair<char,int> item in dict) { Console.WriteLine("数字:{0}出现了{1}次。",item.Key,item.Value); } Console.ReadKey();
可见,简单的几行代码就解决了。
![计算字符串中每种字符出现的次数[Dictionarychar,int泛型集合用法]](https://www.ym97.com/uploads/allimg/201229/101305SE_0.jpg)
而且,这种解法完全解决了上面遇到的两个问题。
我觉得这个应该就是面试官想要的效果吧。(汗。。。不知道我那位同学的面试情况怎么样。。。)
写到这里,我又想到了见过的另一道面试题:“计算字符串中每种字符出现的次数”。
这要用我开始想到的那种思路来解得话,我岂不是要写26个case语句来判断吗,汗。。。。不知道面试官要是看到这么多代码岂不是会当场走人。。。显然这不是最好的解题办法。
还是用泛型集合来解:
同样,代码很简单:
![计算字符串中每种字符出现的次数[Dictionarychar,int泛型集合用法]](https://www.ym97.com/uploads/allimg/201229/1014045T1_0.jpg)
这时,我又突发奇想想到了另一种情况:
用户输入一串字母和数字的混合字符串如“ddeieiei4954jjfjdji383ddjeuut3003k”
统计出每个数字或字母出现的次数,且数字在前,字母在后 ,数字和字母内没有顺序要求
如 数字 4 出现了 2次
数字 3 出现了 4次
.......
........
字母 d 出现了 5次
...........
当然,最简单的还是用泛型集合来解了。。。。
最后来个总结吧:
个人认为,遇到一个新的问题的时候,关键是思路,把思路一步一步理顺了,就像我们老师说的那样,知道你要干什么,想好怎样去做,最后再去写代码。不要一上来就敲代码,思路都没搞清楚呢,最后肯定是问题多多。
希望这篇文章可以给像我这样正在找工作的应届生一些小小的帮助吧!
(突然觉得在大学里学的那些知识都太简单了,而且太深了也不讲。找工作时真的很无奈啊!!!)
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/net/10634.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
如何给asp.net core写个中间
时间:2021-01-03
-
.Net微信网页开发解决用户
时间:2021-01-03
-
c++中Socket通信函数之WSAS
时间:2020-12-29
-
提高生产性工具
时间:2020-12-29
-
全新的membership框架Asp.ne
时间:2020-12-29
-
不用找了,比较全的signal
时间:2020-12-29
-
计算字符串中每种字符出
时间:2020-12-29
-
EntityFramework 5.0 CodeFirst 教
时间:2020-12-29
热门文章
-
.NET 开发环境搭建图文详解
时间:2020-12-27
-
Windows下Visual Studio 2017安装配置方法图文教
时间:2020-12-23
-
.Net微信网页开发解决用户在不同公众号或
时间:2021-01-03
-
oracle 11g rac安装之grid报错解决
时间:2020-12-28
-
ASP.NET Core 3.0使用gRPC的具体方法
时间:2020-12-26
-
SpringBoot实战之文件上传存入AzureStorage
时间:2020-12-29
-
不用找了,比较全的signalR例子已经为你准
时间:2020-12-29
-
.NET Core3.1编写混合C++程序
时间:2020-12-26
-
Oracle的卸载
时间:2020-12-28
-
计算字符串中每种字符出现的次数[Dicti
时间:2020-12-29
