题解 | #学英语# 这题最难的地方在把单词拼对(确信)

学英语

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';
    }
}

全部评论

相关推荐

vip牛牛:测试吧,开发现在至少212
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务