前几天,同学问了我一道程序员的面试题,题目是 “统计用户输入的一串数字中每个数字出现的次数”。
当时看到这个题目,我的第一想法就是:
1.先判断用户输入的是否是数字,用if-else语句来判断;
2.将用户输入的数字字符串转换成char数组;
3.用for循环遍历每个字符,根据switch-case语句来逐一判断。
4.再建立一个int数组来接收判断后的结果,最后for循环输出。
该方法的解题代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
运行效果如下:
不过,这种方法有两个缺点就是,如果用户输入的不是数字(如字母或符号等),程序会提示错误,并退出;再者,也会统计出用户没有输入过的数字的个数为0个,如果某些时候不想知道没有输入的数字的个数,这种解法很不合适,而且代码修改起来也很复杂。
新解法: 泛型集合
碰巧这几天接触了泛型集合,没想到用Dictionary来解这道题是那么的简单。
代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
可见,简单的几行代码就解决了。
而且,这种解法完全解决了上面遇到的两个问题。
我觉得这个应该就是面试官想要的效果吧。(汗。。。不知道我那位同学的面试情况怎么样。。。)
写到这里,我又想到了见过的另一道面试题:“计算字符串中每种字符出现的次数”。
这要用我开始想到的那种思路来解得话,我岂不是要写26个case语句来判断吗,汗。。。。不知道面试官要是看到这么多代码岂不是会当场走人。。。显然这不是最好的解题办法。
还是用泛型集合来解:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
同样,代码很简单:
这时,我又突发奇想想到了另一种情况:
用户输入一串字母和数字的混合字符串如“ddeieiei4954jjfjdji383ddjeuut3003k”
统计出每个数字或字母出现的次数,且数字在前,字母在后 ,数字和字母内没有顺序要求
如 数字 4 出现了 2次
数字 3 出现了 4次
.......
........
字母 d 出现了 5次
...........
当然,最简单的还是用泛型集合来解了。。。。
最后来个总结吧:
个人认为,遇到一个新的问题的时候,关键是思路,把思路一步一步理顺了,就像我们老师说的那样,知道你要干什么,想好怎样去做,最后再去写代码。不要一上来就敲代码,思路都没搞清楚呢,最后肯定是问题多多。
希望这篇文章可以给像我这样正在找工作的应届生一些小小的帮助吧!
(突然觉得在大学里学的那些知识都太简单了,而且太深了也不讲。找工作时真的很无奈啊!!!)
本文转自 酷小孩 博客园博客,原文链接:http://www.cnblogs.com/babycool/archive/2012/02/22/2362725.html ,如需转载请自行联系原作者