Integer to English Words LeetCode solution in Java
1class Solution {23private static final int[] INT_NUMBERS = {41_000_000_000,51_000_000,61000,7100,890,980,1070,1160,1250,1340,1430,1520,1619,1718,1817,1916,2015,2114,2213,2312,2411,2510,269,278,287,296,305,314,323,332,34135};36private static final String[] STRING_NUMBERS = {37"Billion",38"Million",39"Thousand",40"Hundred",41"Ninety",42"Eighty",43"Seventy",44"Sixty",45"Fifty",46"Forty",47"Thirty",48"Twenty",49"Nineteen",50"Eighteen",51"Seventeen",52"Sixteen",53"Fifteen",54"Fourteen",55"Thirteen",56"Twelve",57"Eleven",58"Ten",59"Nine",60"Eight",61"Seven",62"Six",63"Five",64"Four",65"Three",66"Two",67"One"68};6970public String numberToWords(int num) {71if (num == 0) return "Zero";72return numberToWordsHelper(num).toString();73}7475private StringBuilder numberToWordsHelper(int num) {76StringBuilder sb = new StringBuilder();77if (num == 0) return sb;78for (int i = 0; i < INT_NUMBERS.length; i++) {79if (num >= INT_NUMBERS[i]) {80if (num >= 100) {81sb.append(numberToWordsHelper(num / INT_NUMBERS[i]).append(" "));82}8384sb.append(STRING_NUMBERS[i]).append(" ").append(numberToWordsHelper(num % INT_NUMBERS[i]));85break;86}87}88return sb.charAt(sb.length() - 1) == ' ' ? sb.deleteCharAt(sb.length() - 1) : sb; // trim89}90}