面试题,将100之内的数字中文转换..
如何将快速将数字转为文字
比如说 1 => 一,2=> 二, ..., 15=》十五
我当前想的是把中文存到一个数组中
$arr = ['一','二','三','四','五','六','七','八','九','十'];
不过这样也太麻烦了 如何将输入数字转换为中文,有没有更简单的方式?
最终实现的结果是这样的:
输入 12
输出
一二三四五六七八九十十一十二
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如何将快速将数字转为文字
比如说 1 => 一,2=> 二, ..., 15=》十五
我当前想的是把中文存到一个数组中
不过这样也太麻烦了 如何将输入数字转换为中文,有没有更简单的方式?
最终实现的结果是这样的:
输入 12
输出
下面是
JavaScript
的实现观察汉字的数字表示
汉字显式地指定了 数的阶 比如
一百零一
里面有百这个阶 (个十百千万)2
>>>>二个
10
>>>>一十
>>>>十
16
>>>>一十
六个
>>>>十六
105
>>>>一百
零十
五个
>>>>一百零五
1024
>>>>一千
零百
二十
四个
>>>>一千零二十四
可以看到它的表示法可以看成是
值 + 阶
的形式。此外满足以下条件的时候
需要省略阶或者值
根据以上思考 应该得出的编程思路是这样的:
输入数字
n
把
n
映射到一个数组tokens
上。 比如8
变成["八"]
,101
变成["一", "零", "一"]
添加阶
101
变成["一", "百", "十", "零", "一", "个"]
筛选 比如
一百十零一个
变成最简形式一百零一
工具函数
实现
先实现
大于 10
的数字映射到汉字的数制
上比如输入
101
返回一百零一
利用上面写的工具函数去做会快些
简单的测试 测试转化
2
4
6
8
16
32
... 成二
四
八
十六
三十二
...遍历数字
.... 从 1 到 n
测试
如果你能用文字将数字的转化过程描述清楚,那么写代码就是个翻译的过程。
算法其实是业务逻辑很奇怪的业务逻辑而已,重点在于分析这个业务逻辑
阿拉伯数字转中文数字,小学没毕业也会写,脑子里一定有一套方法去完成这个转化过程。所以这里的考察重点就是,对问题的抽象过程。要抽象的准确,首先得对问题本身有一个全面的分析了解,找出规律。比数字转化过程中,0什么时候叫十,什么时候叫零。这个过程,在脑子里执行的太自然了,以至于去分析它的情况,找出规律,都还是需要一定能力的。
推荐这篇文章,文章开始的分析就是抽象过程,对编程很重要
支持千亿级别的数,修改 ws 数组可以无限扩充,修改cns数组为繁体可以用于人民币大写
附上思路
https://segmentfault.com/a/11...
https://github.com/wilon/php-...
PHP数字转为汉字描述,人民币大写