// 四万六千二百八十一亿两千二百五十三万九千八百四十八点零零一四一五九二六
// 4628122539848.001415926
function out(){
// todo
}
在群聊里面,看到这样一道面试题,感觉有点意思,随手做了一下。
分析思路:
第一,肯定要有汉字到数字之间的map关系。
第二,两个汉字为一组,合成一个数字,比如四万(40000),六千(6000)
第三,不可以直接从前加到后,因为单位是不统一的。40000 + 6000,这样没问题,但是后面加到一亿的时候,问题就来了。本来应该460000000000对吧?直接加的话,就成了100046000。单位倒挂了。
综上所述,不可以直接相加的话,可以先把数字入栈,最后再做处理,所以,需要定义的有以下方法:
// 中文数字map
function ch_numer(s){}
// 中文单位map
function ch_unit(s){}
// 文字转数字
function cover(a,b){}
// 单位统一
function balance(a,b){}
// 数字入栈
function merge(a){}
// reduce
function plus(a,b){}
function out(s){}
完整实现如下:
// 四万六千二百八十一亿两千二百五十三万九千八百四十八点零零一四一五九二六
// 4628122539848.5926
var res = [];
function ch_number(s) {
var map &#