LeetCode 273: Integer to English Words Solution

Master LeetCode problem 273 (Integer to English Words), a hard challenge, with our optimized solutions in Java, C++, and Python. Explore detailed explanations, test your code in our interactive editor, and prepare for coding interviews.

273. Integer to English Words

Problem Explanation

Explanation

To solve this problem, we can break down the number into groups of three digits each (thousands, millions, billions, etc.) and then convert each group into its English words representation. We can then combine these representations for each group to form the final result.

We can create helper functions to convert a single digit, two digits, and three digits into English words. By processing the number in groups of three digits, we can handle each group separately and then combine the results with appropriate thousand/million/billion separators.

Time Complexity: O(1) as the maximum number of iterations is constant for any given input. Space Complexity: O(1) as the space used is constant for any input.

Solution Code

class Solution {
    private final String[] LESS_THAN_20 = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
    private final String[] TENS = {"", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
    private final String[] THOUSANDS = {"", "Thousand", "Million", "Billion"};

    public String numberToWords(int num) {
        if (num == 0) return "Zero";
        String words = "";
        int i = 0;
        while (num > 0) {
            if (num % 1000 != 0) {
                words = helper(num % 1000) + THOUSANDS[i] + " " + words;
            }
            num /= 1000;
            i++;
        }
        return words.trim();
    }

    private String helper(int num) {
        if (num == 0) return "";
        else if (num < 20) return LESS_THAN_20[num] + " ";
        else if (num < 100) return TENS[num / 10] + " " + helper(num % 10);
        else return LESS_THAN_20[num / 100] + " Hundred " + helper(num % 100);
    }
}

Try It Yourself

Loading code editor...

Related LeetCode Problems

Frequently Asked Questions

How to solve LeetCode 273 (Integer to English Words)?

This page provides optimized solutions for LeetCode problem 273 (Integer to English Words) in Java, C++, and Python, along with a detailed explanation and an interactive code editor to test your code.

What is the time complexity of LeetCode 273 (Integer to English Words)?

The time complexity for LeetCode 273 (Integer to English Words) varies by solution. Check the detailed explanation section for specific complexities in Java, C++, and Python implementations.

Can I run code for LeetCode 273 on DevExCode?

Yes, DevExCode provides an interactive code editor where you can write, test, and run your code for LeetCode 273 in Java, C++, or Python.

Back to LeetCode Solutions