Last updated on October 6th, 2024 at 02:04 pm
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
Topics
Math, String
Companies
Facebook, Microsoft
Level of Question
Hard
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”
1. 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"};
2. 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(); } }
3. 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'], ]);
4. 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'