5a3c1b2d创建于 2025年8月3日历史提交
/**
 * Time O(Log10N) | Space O(1)
 * https://leetcode.com/problems/integer-to-english-words
 * @param {number} num
 * @return {string}
 */

var convertToWords = function (num) {
    var belowTwenty = [
        '',
        'One',
        'Two',
        'Three',
        'Four',
        'Five',
        'Six',
        'Seven',
        'Eight',
        'Nine',
        'Ten',
        'Eleven',
        'Twelve',
        'Thirteen',
        'Fourteen',
        'Fifteen',
        'Sixteen',
        'Seventeen',
        'Eighteen',
        'Nineteen',
    ];
    var belowHundred = [
        '',
        'Ten',
        'Twenty',
        'Thirty',
        'Forty',
        'Fifty',
        'Sixty',
        'Seventy',
        'Eighty',
        'Ninety',
    ];
    var thousands = ['', 'Thousand', 'Million', 'Billion'];
    var pointer = 0;
    result = '';

    while (num > 0) {
        var words = '';
        reminder = num % 1000;
        num = Math.floor(num / 1000);

        if (reminder > 0) {
            if (reminder >= 100) {
                words += belowTwenty[Math.floor(reminder / 100)] + ' Hundred ';
                reminder %= 100;
            }

            if (reminder >= 20) {
                words += belowHundred[Math.floor(reminder / 10)] + ' ';
                reminder %= 10;
            }

            if (reminder > 0) {
                words += belowTwenty[Math.floor(reminder)] + ' ';
            }

            result = words + thousands[pointer] + ' ' + result;
        }
        pointer += 1;
    }
    return result.trim();
};

var numberToWords = function (num) {
    if (num == 0) {
        return 'Zero';
    } else {
        return convertToWords(num);
    }
};