题解 | #人民币转换#

人民币转换

http://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b


function transferMoney(str) {
  const res = []
  let zero_pre = false // 确保在连续‘0’的情况下,只有一个'零'
  // 倒着转化
  for (let i = str.length - 1; i >= 0; i--) {
    const c = str[i]
    if (c === '0') {
      if (!zero_pre) {
        zero_pre = true
        res.push(num[Number(c)])
      } 
    }else {
        zero_pre = false
        res.push(pro[str.length - 1 - i], num[Number(c)])
      }
  }
  res.reverse()
  // console.log(res)
  // 去掉后面所有的 ”零“
  while (res[res.length - 1] === '零') {
    res.pop()
  }
  return res.join('').replace('壹拾', '拾')
}

const num = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
const pro = ['', '拾', '佰', '仟', '万', '亿', '元', '角', '分', '整']

const [n, m] = readline().split('.')
const res = ['人民币']
if (n.length > 8) {
  const c = transferMoney(n.slice(0, -8))
  res.push(c + '亿')
}
if (n.length > 4) {
  const c = transferMoney(n.slice(-8, -4))
  res.push(c + '万')
}
if (n !== '0') {
  const c = transferMoney(n.slice(-4))
  res.push(c + '元')
}
if (m === '00') {
  res.push('整')
} else {
  if (m[0] > 0) {
    const c = num[Number(m[0])]
    res.push(c + '角')
  }
  if (m[1] > 0) {
    const c = num[Number(m[1])]
    res.push(c + '分')
  }
}
console.log(res.join(''))
全部评论

相关推荐

uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务