LeetCode #273. Integer to English Words

2 17 43
calendar_today agoschedule1 min read
— Originally published at dev.to

Recursion is a concept taught at University level. It is a concept many don't understand but it appears in coding challenges .For this reason, I have decided to cover it.

Problem
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"

Constraints:

0 <= num <= 231 - 1

Discussion
For this, we can use recursion. We take base cases for some numbers and return specific words. If the number is not any of these numbers, we call the function as much as possible.

Solutions
Java

class Solution {
    public String numberToWords(int num){
      if(num<10){
       if(num==0)return "Zero"; 
       else if(num==1)return "One";
       else if(num==2) return "Two";
       else if(num==3) return "Three";
       else if(num==4) return "Four";
       else if(num==5) return "Five";
       else if(num==6) return "Six";
       else if(num==7) return "Seven";
       else if(num==8) return "Eight";
       else return "Nine";
      }else if(num>=10 && num<100){
        if(num==10)return"Ten";
        else if(num==11)return "Eleven";
        else if(num==12) return "Twelve";
        else if(num==13) return "Thirteen";
        else if(num==14) return "Fourteen";
        else if(num==15) return "Fifteen";
        else if(num==16) return "Sixteen";
        else if(num==17) return "Seventeen";
        else if(num==18) return "Eighteen";
        else if(num==19) return "Nineteen";
        else if(num==20) return "Twenty";
        else if(num==30) return "Thirty";
        else if(num==40) return "Forty";
        else if(num==50) return "Fifty";
        else if(num==60) return "Sixty";
        else if(num==70) return "Seventy";
        else if(num==80) return "Eighty";
        else if(num==90) return "Ninety";
        else if(num>60 && num<70) return "Sixty "+numberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +numberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +numberToWords(num-80);
        else if(num>20 && num<30) return "Twenty "+numberToWords(num-20);
        else if(num>30 && num<40) return "Thirty " +numberToWords(num-30);
        else if(num>40 && num<50) return "Forty " +numberToWords(num-40);
        else if(num>50 && num<60) return "Fifty "+numberToWords(num-50);
        else if(num>60 && num<70) return "Sixty "+numberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +numberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +numberToWords(num-80);
        else  return "Ninety "+numberToWords(num-90);
      }else if(num>=100 && num<1000){
        int numHundred=num/100;
        int modHundred=num%100;
        if(modHundred==0) return numberToWords(numHundred)+" Hundred";
        else return numberToWords(numHundred)+" Hundred "+numberToWords(modHundred);
      }else if(num>=1000 && num<1000000){
        int numThousand=num/1000;
        int modThousand=num%1000;
        if(modThousand==0) return numberToWords(numThousand)+" Thousand";
        else return numberToWords(numThousand)+" Thousand "+numberToWords(modThousand);
      }else if(num>=1000000 && num<1000000000){
       int numMillion=num/1000000;
       int modMillion=num%1000000;
        if(modMillion==0) return numberToWords(numMillion)+" Million";
        else return numberToWords(numMillion)+" Million "+numberToWords(modMillion);
      }else{
       int numBillion=num/1000000000; 
       int modBillion=num%1000000000;
        if(modBillion==0) return numberToWords(numBillion)+" Billion";
        else return numberToWords(numBillion)+" Billion "+numberToWords(modBillion);
      }    
    }
}

C#

public class Solution {
    public string NumberToWords(int num) {
      if(num<10){
       if(num==0)return "Zero"; 
       else if(num==1)return "One";
       else if(num==2) return "Two";
       else if(num==3) return "Three";
       else if(num==4) return "Four";
       else if(num==5) return "Five";
       else if(num==6) return "Six";
       else if(num==7) return "Seven";
       else if(num==8) return "Eight";
       else return "Nine";
      }else if(num>=10 && num<100){
        if(num==10)return"Ten";
        else if(num==11)return "Eleven";
        else if(num==12) return "Twelve";
        else if(num==13) return "Thirteen";
        else if(num==14) return "Fourteen";
        else if(num==15) return "Fifteen";
        else if(num==16) return "Sixteen";
        else if(num==17) return "Seventeen";
        else if(num==18) return "Eighteen";
        else if(num==19) return "Nineteen";
        else if(num==20) return "Twenty";
        else if(num==30) return "Thirty";
        else if(num==40) return "Forty";
        else if(num==50) return "Fifty";
        else if(num==60) return "Sixty";
        else if(num==70) return "Seventy";
        else if(num==80) return "Eighty";
        else if(num==90) return "Ninety";
        else if(num>60 && num<70) return "Sixty "+NumberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +NumberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +NumberToWords(num-80);
        else if(num>20 && num<30) return "Twenty "+NumberToWords(num-20);
        else if(num>30 && num<40) return "Thirty " +NumberToWords(num-30);
        else if(num>40 && num<50) return "Forty " +NumberToWords(num-40);
        else if(num>50 && num<60) return "Fifty "+NumberToWords(num-50);
        else if(num>60 && num<70) return "Sixty "+NumberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +NumberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +NumberToWords(num-80);
        else  return "Ninety "+NumberToWords(num-90);
      }else if(num>=100 && num<1000){
        int numHundred=num/100;
        int modHundred=num%100;
        if(modHundred==0) return NumberToWords(numHundred)+" Hundred";
        else return NumberToWords(numHundred)+" Hundred "+NumberToWords(modHundred);
      }else if(num>=1000 && num<1000000){
        int numThousand=num/1000;
        int modThousand=num%1000;
        if(modThousand==0) return NumberToWords(numThousand)+" Thousand";
        else return NumberToWords(numThousand)+" Thousand "+NumberToWords(modThousand);
      }else if(num>=1000000 && num<1000000000){
       int numMillion=num/1000000;
       int modMillion=num%1000000;
        if(modMillion==0) return NumberToWords(numMillion)+" Million";
        else return NumberToWords(numMillion)+" Million "+NumberToWords(modMillion);
      }else{
       int numBillion=num/1000000000; 
       int modBillion=num%1000000000;
        if(modBillion==0) return NumberToWords(numBillion)+" Billion";
        else return NumberToWords(numBillion)+" Billion "+NumberToWords(modBillion);
      }       
    }
}

JavaScript

var numberToWords = function(num) {
  if(num<10){
       if(num==0)return "Zero"; 
       else if(num==1)return "One";
       else if(num==2) return "Two";
       else if(num==3) return "Three";
       else if(num==4) return "Four";
       else if(num==5) return "Five";
       else if(num==6) return "Six";
       else if(num==7) return "Seven";
       else if(num==8) return "Eight";
       else return "Nine";
      }else if(num>=10 && num<100){
        if(num==10)return"Ten";
        else if(num==11)return "Eleven";
        else if(num==12) return "Twelve";
        else if(num==13) return "Thirteen";
        else if(num==14) return "Fourteen";
        else if(num==15) return "Fifteen";
        else if(num==16) return "Sixteen";
        else if(num==17) return "Seventeen";
        else if(num==18) return "Eighteen";
        else if(num==19) return "Nineteen";
        else if(num==20) return "Twenty";
        else if(num==30) return "Thirty";
        else if(num==40) return "Forty";
        else if(num==50) return "Fifty";
        else if(num==60) return "Sixty";
        else if(num==70) return "Seventy";
        else if(num==80) return "Eighty";
        else if(num==90) return "Ninety";
        else if(num>60 && num<70) return "Sixty "+numberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +numberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +numberToWords(num-80);
        else if(num>20 && num<30) return "Twenty "+numberToWords(num-20);
        else if(num>30 && num<40) return "Thirty " +numberToWords(num-30);
        else if(num>40 && num<50) return "Forty " +numberToWords(num-40);
        else if(num>50 && num<60) return "Fifty "+numberToWords(num-50);
        else if(num>60 && num<70) return "Sixty "+numberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +numberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +numberToWords(num-80);
        else  return "Ninety "+numberToWords(num-90);
      }else if(num>=100 && num<1000){
        let modHundred=num%100;
        let numHundred=(num-modHundred)/100;
        if(modHundred==0) return numberToWords(numHundred)+" Hundred";
        else return numberToWords(numHundred)+" Hundred "+numberToWords(modHundred);
      }else if(num>=1000 && num<1000000){
        let modThousand=num%1000;
        let numThousand=(num-modThousand)/1000;
        if(modThousand==0) return numberToWords(numThousand)+" Thousand";
        else return numberToWords(numThousand)+" Thousand "+numberToWords(modThousand);
      }else if(num>=1000000 && num<1000000000){
       let modMillion=num%1000000;
       let numMillion=(num-modMillion)/1000000;
        if(modMillion==0) return numberToWords(numMillion)+" Million";
        else return numberToWords(numMillion)+" Million "+numberToWords(modMillion);
      }else{
       let modBillion=num%1000000000;
       let numBillion=(num-modBillion)/1000000000; 
        if(modBillion==0) return numberToWords(numBillion)+" Billion";
        else return numberToWords(numBillion)+" Billion "+numberToWords(modBillion);
      }       
};

C++

class Solution {
public:
    string numberToWords(int num) {
     if(num<10){
       if(num==0)return "Zero"; 
       else if(num==1)return "One";
       else if(num==2) return "Two";
       else if(num==3) return "Three";
       else if(num==4) return "Four";
       else if(num==5) return "Five";
       else if(num==6) return "Six";
       else if(num==7) return "Seven";
       else if(num==8) return "Eight";
       else return "Nine";
      }else if(num>=10 && num<100){
        if(num==10)return"Ten";
        else if(num==11)return "Eleven";
        else if(num==12) return "Twelve";
        else if(num==13) return "Thirteen";
        else if(num==14) return "Fourteen";
        else if(num==15) return "Fifteen";
        else if(num==16) return "Sixteen";
        else if(num==17) return "Seventeen";
        else if(num==18) return "Eighteen";
        else if(num==19) return "Nineteen";
        else if(num==20) return "Twenty";
        else if(num==30) return "Thirty";
        else if(num==40) return "Forty";
        else if(num==50) return "Fifty";
        else if(num==60) return "Sixty";
        else if(num==70) return "Seventy";
        else if(num==80) return "Eighty";
        else if(num==90) return "Ninety";
        else if(num>60 && num<70) return "Sixty "+numberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +numberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +numberToWords(num-80);
        else if(num>20 && num<30) return "Twenty "+numberToWords(num-20);
        else if(num>30 && num<40) return "Thirty " +numberToWords(num-30);
        else if(num>40 && num<50) return "Forty " +numberToWords(num-40);
        else if(num>50 && num<60) return "Fifty "+numberToWords(num-50);
        else if(num>60 && num<70) return "Sixty "+numberToWords(num-60);
        else if(num>70 && num<80) return "Seventy " +numberToWords(num-70);
        else if(num>80 && num<90) return "Eighty " +numberToWords(num-80);
        else  return "Ninety "+numberToWords(num-90);
      }else if(num>=100 && num<1000){
        int numHundred=num/100;
        int modHundred=num%100;
        if(modHundred==0) return numberToWords(numHundred)+" Hundred";
        else return numberToWords(numHundred)+" Hundred "+numberToWords(modHundred);
      }else if(num>=1000 && num<1000000){
        int numThousand=num/1000;
        int modThousand=num%1000;
        if(modThousand==0) return numberToWords(numThousand)+" Thousand";
        else return numberToWords(numThousand)+" Thousand "+numberToWords(modThousand);
      }else if(num>=1000000 && num<1000000000){
       int numMillion=num/1000000;
       int modMillion=num%1000000;
        if(modMillion==0) return numberToWords(numMillion)+" Million";
        else return numberToWords(numMillion)+" Million "+numberToWords(modMillion);
      }else{
       int numBillion=num/1000000000; 
       int modBillion=num%1000000000;
        if(modBillion==0) return numberToWords(numBillion)+" Billion";
        else return numberToWords(numBillion)+" Billion "+numberToWords(modBillion);
      }       
    }
};
🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

Leetcode #324. Wiggle Sort II

Hector Williams - Aug 4

Leetcode # 107. Binary Tree Level Order Traversal II

Hector Williams - Aug 4

LeetCode Milestone!!!

Hector Williams - Apr 11

LeetCode #1458.Max Dot Product of Two Subsequences

Hector Williams - Feb 4

I’m a Senior Dev and I’ve Forgotten How to Think Without a Prompt

Karol Modelski - Mar 19
chevron_left
1.3k Points62 Badges
21Posts
6Comments
22Connections
An experienced freelance software engineer from the Caribbean!!!

Related Jobs

View all jobs →

Commenters (This Week)

3 comments
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!