273. Integer to English Words

Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231- 1.

For example,

123 -
>
 "One Hundred Twenty Three"
12345 -
>
 "Twelve Thousand Three Hundred Forty Five"
1234567 -
>
 "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
class Solution {
    Map<Integer, String> map = new HashMap<Integer, String>() 
    {{
        put(0, "Zero");
        put(1, "One");
        put(2, "Two");
        put(3, "Three");
        put(4, "Four");
        put(5, "Five");
        put(6, "Six");
        put(7, "Seven");
        put(8, "Eight");
        put(9, "Nine");
        put(10, "Ten");
        put(11, "Eleven");
        put(12, "Twelve");
        put(13, "Thirteen");
        put(14, "Fourteen");
        put(15, "Fifteen");
        put(16, "Sixteen");
        put(17, "Seventeen");
        put(18, "Eighteen");
        put(19, "Nineteen");
        put(20, "Twenty");
        put(30, "Thirty");
        put(40, "Forty");
        put(50, "Fifty");
        put(60, "Sixty");
        put(70, "Seventy");
        put(80, "Eighty");
        put(90, "Ninety");
        put(100, "Hundred");
        put(1000, "Thousand");
        put(1000000, "Million");
        put(1000000000, "Billion");
    }};

    public String numberToWords(int num) {
        if(num == 0) return map.get(0);
        if( num < 0) return "Negative " + toWords(Math.abs(num));

        return toWords(num);
    }

    public String toWords(int num) {
        if(num >= 1000000000) 
            return (toWords(num / 1000000000) + " " + map.get(1000000000) + " " + toWords(num % 1000000000)).trim();
        else if(num >= 1000000) 
            return (toWords(num / 1000000) + " " + map.get(1000000) + " " + toWords(num % 1000000)).trim();
        else if(num >= 1000) 
            return (toWords(num / 1000) + " " + map.get(1000) + " " + toWords(num % 1000)).trim();
        else if(num >= 100) 
            return (toWords(num / 100) + " " + map.get(100) + " " + toWords(num % 100)).trim();
        else if(num >= 20) 
            return (map.get((num/10) * 10) + " " + toWords(num % 10)).trim();
        else if(num > 0) 
            return map.get(num);

        return "";
    }

}

results for ""

    No results matching ""