题解 | #学英语# 这题最难的地方在把单词拼对(确信)
学英语
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';
}
}
凡岛公司福利 871人发布