Integer to English Words LeetCode Solution

Here, We see Integer to English Words LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

List of all LeetCode Solution

Integer to English Words LeetCode Solution

Integer to English Words LeetCode Solution

Problem Statement

Convert a non-negative integer num to its English words representation.

Example 1:
Input: num = 123
Output: “One Hundred Twenty Three”

Example 2:
Input: num = 12345
Output: “Twelve Thousand Three Hundred Forty Five”

Example 3:
Input: num = 1234567
Output: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”

Integer to English Words Solution C++

class Solution {
public:
    string numberToWords(int num) {
        if(num == 0) return "Zero";
        else return int_string(num).substr(1);
    }
private:
    static const char * const below_20[];
    static const char * const below_100[];
    static string int_string(int num) {
        if(num >= 1000000000)   return int_string(num / 1000000000) + " Billion" + int_string(num - 1000000000 * (num / 1000000000));
        else if(num >= 1000000) return int_string(num / 1000000) + " Million" + int_string(num - 1000000 * (num / 1000000));
        else if(num >= 1000)    return int_string(num / 1000) + " Thousand" + int_string(num - 1000 * (num / 1000));
        else if(num >= 100)     return int_string(num / 100) + " Hundred" + int_string(num - 100 * (num / 100));
        else if(num >= 20)      return string(" ") + below_100[num / 10 - 2] + int_string(num - 10 * (num / 10));
        else if(num >= 1)       return string(" ") + below_20[num - 1];
        else return "";
        }
};
const char * const Solution::below_20[] =  {"One", "Two", "Three", "Four","Five","Six","Seven","Eight","Nine","Ten", "Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
const char * const Solution::below_100[] = {"Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};Code language: PHP (php)

Integer to English Words Solution Java

class Solution {
    private final String[] belowTwenty = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine",
            "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
    private final String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
    public String numberToWords(int num) {
        if (num == 0) {
            return "Zero";
        }
        return helper(num);
    }

    private String helper(int num) {
        StringBuilder result = new StringBuilder();
        if (num < 20) {
            result.append(belowTwenty[num]);
        } else if (num < 100) {
            result.append(tens[num / 10]).append(" ").append(belowTwenty[num % 10]);
        } else if (num < 1000) {
            result.append(helper(num / 100)).append(" Hundred ").append(helper(num % 100));
        } else if (num < 1000000) {
            result.append(helper(num / 1000)).append(" Thousand ").append(helper(num % 1000));
        } else if (num < 1000000000) {
            result.append(helper(num / 1000000)).append(" Million ").append(helper(num % 1000000));
        } else {
            result.append(helper(num / 1000000000)).append(" Billion ").append(helper(num % 1000000000));
        }
        return result.toString().trim();
    }
}Code language: PHP (php)

Integer to English Words Solution JavaScript

var numberToWords = function(num) {
  if (num === 0) {
    return 'Zero';
  }
  if (num <= 20) {
    return translations.get(num);
  }
  let result = [];
  for (let [value, translation] of translations) {
    const times = Math.floor(num / value);
    if (times === 0) {
      continue;
    }
    num -= times * value;
    if (times === 1 && value >= 100) {
      result.push('One', translation);
      continue;
    }
    if (times === 1) {
      result.push(translation);
      continue;
    }
    result.push(numberToWords(times), translation);
  }
  return result.join(' ');
};

const translations = new Map([
  [1000000000, 'Billion'],
  [1000000, 'Million'],
  [1000, 'Thousand'],
  [100, 'Hundred'],
  [90, 'Ninety'],
  [80, 'Eighty'],
  [70, 'Seventy'],
  [60, 'Sixty'],
  [50, 'Fifty'],
  [40, 'Forty'],
  [30, 'Thirty'],
  [20, 'Twenty'],
  [19, 'Nineteen'],
  [18, 'Eighteen'],
  [17, 'Seventeen'],
  [16, 'Sixteen'],
  [15, 'Fifteen'],
  [14, 'Fourteen'],
  [13, 'Thirteen'],
  [12, 'Twelve'],
  [11, 'Eleven'],
  [10, 'Ten'],
  [9, 'Nine'],
  [8, 'Eight'],
  [7, 'Seven'],
  [6, 'Six'],
  [5, 'Five'],
  [4, 'Four'],
  [3, 'Three'],
  [2, 'Two'],
  [1, 'One'],
]);Code language: JavaScript (javascript)

Integer to English Words Solution Python

class Solution(object):
    def numberToWords(self, num):
        to19 = 'One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve ' \
           'Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen'.split()
        tens = 'Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety'.split()
        def words(n):
            if n < 20:
                return to19[n-1:n]
            if n < 100:
                return [tens[n/10-2]] + words(n%10)
            if n < 1000:
                return [to19[n/100-1]] + ['Hundred'] + words(n%100)
            for p, w in enumerate(('Thousand', 'Million', 'Billion'), 1):
                if n < 1000**(p+1):
                    return words(n/1000**p) + [w] + words(n%1000**p)
        return ' '.join(words(num)) or 'Zero'
Scroll to Top