题解 | #学英语# 这题最难的地方在把单词拼对(确信)
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void async function () { // Write your code here while(line = await readline()){ // 2,000,000 let n = line; let low = get3(line.substring(line.length - 3)); if(n.length > 3){ low = get3(line.substring(line.length - 6, line.length - 3)) + " thousand " + low; } if(n.length > 6){ low = get3(line.substring(line.length - 9, line.length - 6)) + " million " + low; } if(n.length > 9){ low = get3(line.substring(line.length - 12, line.length - 9)) + " billion " + low; } console.log(low); } }() /** * @param {String} n */ function get3(n){ let res = ""; let hundred = undefined; let ten = undefined; let one = undefined; if(n.length === 3){ hundred = n[0]; ten = n[1]; one = n[2]; } else if(n.length === 2){ ten = n[0]; one = n[1]; } else{ one = n; } // 百位 if(n.length === 3 && hundred !== '0'){ res += get1(hundred) + " hundred " if(ten !== '0' || one !== '0') res += "and "; } // 十位 if(n.length >= 2){ // 0x 读法 if(ten === '0'){// 十位为0 直接接上个位 if(one !== '0'){ res += get1(one); } } // 1x 读法 else if(ten === '1'){ res += get1x(ten + one); } // nx 读法 else{ res += getnx(ten) if(one !== '0'){ res = res + " " + get1(one); } } } // 仅个位 else{ res += get1(one); } return res; } // 获得一个数字的读法 function get1(n){ switch(n){ case '0': return ""; case '1': return "one"; case '2': return "two"; case '3': return "three"; case '4': return "four"; case '5': return "five"; case '6': return "six"; case '7': return "seven"; case '8': return "eight"; case '9': return "nine"; default: return undefined; } } // 获得 十几 的读法 function get1x(n){ switch(n){ case '10': return 'ten'; case '11': return 'eleven'; case '12': return 'twenteen' case '13': return 'thirteen'; case '14': return 'fourteen'; case '15': return 'fifteen'; case '16': return 'sixteen'; case '17': return 'seventeen'; case '18': return 'eighteen'; case '19': return 'nineteen'; } } // 获得 几十 的读法 function getnx(n){ switch(n){ case '2': return 'twenty'; case '3': return 'thirty'; case '4': return 'forty'; case '5': return 'fifty'; case '6': return 'sixty'; case '7': return 'seventy'; case '8': return 'eighty'; case '9': return 'ninety'; } }