思维的发散

Posted koopa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了思维的发散相关的知识,希望对你有一定的参考价值。

一、字符串的操作

字符串是可以倒着拼接的!!!

例子:比如输入一个整型数字123456,要求输出对应的中文“一二三四五六”

实现方法:

  我们用for循环对10取余数可以很容易的按照如下顺序拿到每一位的数字

  6、5、4、3、2、1(可以看出数字是倒序的)

  有几种方法可以处理这些数据

  方法一:

    先得到一个倒序的数值:654321,然后再把这个654321用for循环对10取余数,就可拿到原始顺序排列的每一位数字1、2、3、4、5、6

    之后通过switch case语句取到对应的中文即可

    但这种做法存在一个隐患,对10的倍数的数值会丢掉末尾的0,例如20000,得到的倒序数值是2,而不会是期望的00002

  方法二:

    利用数字的位数进行修正

    对于一个具体的输入数值,我们可拿到其最高位数

    这样我们就可以写一个for循环,从最高位开始往下取出每一位的数字进行操作

    取每一位数字的方法,可以在循环内嵌套一个不断除以10的for循环(需要注意的是,在最外层的for循环中,每循环一次都要【减去】对应位的数值)

    即123456,共有六位数,从最高位开始循环,取到1后,123456要减掉100000,拿到23456后再开始下一轮的循环

    这样就能避免10的倍数的隐患,取到每一个位上的数字

  方法三:

    设置两个字符串变量,str_result=“”,str

    在for循环的每一轮中可按照倒序取到一位数字,在拿到数字后,直接用switch case语句获取对应中文,赋值给str

    利用下面这条语句

    str_result = str + str_result;

    【将新的字符串拼接到旧字符串的“前面”】,问题解决!

思考:

  方法一是比较直白的思路,但不够严谨

  方法二虽然能实现需求,但是嵌套了两层的for循环,并且还要创建中间变量用以不断减去当前的最高位,不够优雅

  方法三只用了一层循环就解决了问题,代码比方法二要简洁,理解起来也更为顺畅

以上是关于思维的发散的主要内容,如果未能解决你的问题,请参考以下文章

思维的发散

三十而立

[算法]发散思维能力题目

多题一解思维发散拓展训练辅导

用量子物理学原理解释为什么振金可以吸收能量(论发散思维的重要性)

WebAPi添加常用扩展方法及思维发散