美文网首页
二刷273. Integer to English Words

二刷273. Integer to English Words

作者: greatseniorsde | 来源:发表于2018-02-05 08:02 被阅读0次

follow up 可以为负数,简单

//non negative, input <= 2^31 - 1.
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"}; 
    public String numberToWords(int num) {
        if (num == 0){
            return "Zero";
        }
        return helper(num);
    }
    private String helper(int num){
        String res  = "";
        if (num < 20){
            res = LESS_THAN_20[num];
        } else if (num < 100){
            res = TENS[num / 10] + " " + helper(num % 10);
        } else if (num < 1000){
            res = helper(num / 100) + " Hundred " + helper(num % 100);
        } else if (num < 1000000){
            res = helper(num / 1000) + " Thousand " + helper(num % 1000);
        } else if (num < 1000000000){
            res = helper(num / 1000000) + " Million " + helper(num % 1000000);
        } else {             //2147483647
            res = helper(num / 1000000000) + " Billion " + helper(num % 1000000000);
        }
        return res.trim();
    }
}

//number可以无限大,可以正负数
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"}; 
    public String numberToWords(int num) {
        if (num == 0){
            return "Zero";
        }
        return helper(num);
    }
    private String helper(int num){
        String res = "";
        //-2147483648
        if (num == Integer.MIN_VALUE){
            return "Negative Two Billion One Hundred Forty Seven Million Four Hundred Eighty Three Thousand Six Hundred Forty Eight";
        }
        if (num < 0){
            res += "Negative ";
            num = -num;
        }
        if (num < 20){
            res += LESS_THAN_20[num];
        } else if (num < 100){
            res += TENS[num / 10] + " " + helper(num % 10);
        } else if (num < 1000){
            res += helper(num / 100) + " Hundred " + helper(num % 100);
        } else if (num < 1000000){
            res += helper(num / 1000) + " Thousand " + helper(num % 1000);
        } else if (num < 1000000000){
            res += helper(num / 1000000) + " Million " + helper(num % 1000000);
        } else {
            res += helper(num / 1000000000) + " Billion " + helper(num % 1000000000);
        }
        return res.trim();
    }
}

相关文章

网友评论

      本文标题:二刷273. Integer to English Words

      本文链接:https://www.haomeiwen.com/subject/kkcbzxtx.html