成为一名计算机软件员(高级工)的道路(二)

今天下午是程序设计,题目还是比较简单的
如下:
1、由用户任意输入一串字符,统计其中数字、英文字母(大写)、空格的个数。
2、回文数:输出10000-99999之间的所有回文数。如:12321
3、输入整数 b,输出结果 s,其中 s与b的关系是:s=b+bb+bbb+bbbb+bb…b,最后为 x个a。例如 x=2时,s=2+22=24。要求:使用循环结构语句实现。
4、根据指定的 n,输出相应的斐波纳契数列。说明:斐波纳契数列如下所示:0,1,1,2,3,5,8,13,21…即从0和1开始,其后的任何一个斐波纳契数都是它前面两个数之和。例如n=6,则返回数列0,1,1,2,3,5

下列为C#代码实现:

第二题回文数:成为一名计算机软件员(高级工)的道路(二)

第三题成为一名计算机软件员(高级工)的道路(二)

第四题:成为一名计算机软件员(高级工)的道路(二)

第一题:

成为一名计算机软件员(高级工)的道路(二)

第二题本来想用栈来做的,后来觉得还是这样写实现速度比较快,所以用了这个向下不是特别友好的编码方式来实现这个功能。

第一题比较简单,但是其实还有可以优化的空间,没有实现最优。可以使用哨兵元素来减少计数时所产生的数据问题。但是能表示的数据量较小,(32位长度的字符串)

第三题也是常规操作了,,很简单,适合小白入门,就是一个普通的迭代。

第四题是经典的斐波那契,考察了递归,个人感觉没有任何难度。但是迭代情况下的递归所消耗的时间复杂度会成指数倍上升,这边的这个实现方式总的来说还是采用迭代更加的高效。因为中间过程需要进行存储,能够减少迭代产生的时间开销。因为会有大部分的重复指令。