面试题:汉字转换为数字(js版)

// 四万六千二百八十一亿两千二百五十三万九千八百四十八点零零一四一五九二六
// 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 &#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值