码迷,mamicode.com
首页 > 其他好文 > 详细

思维的发散

时间:2018-03-11 12:05:40      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:字符串   一个   开始   例子   变量   处理   log   设置   for   

一、字符串的操作

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

例子:比如输入一个整型数字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循环,并且还要创建中间变量用以不断减去当前的最高位,不够优雅

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

思维的发散

标签:字符串   一个   开始   例子   变量   处理   log   设置   for   

原文地址:https://www.cnblogs.com/Koopa/p/8542953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!