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
Table of Contents
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'