273. Integer to English Words

class Solution(object):
    def numberToWords(self, num):
        """
        :type num: int
        :rtype: str
        """
        def helper(num):
            lookup = {0: "Zero", 1:"One", 2: "Two", 3: "Three", 4: "Four", \
                  5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine", \
                  10: "Ten", 11: "Eleven", 12: "Twelve", 13: "Thirteen", 14: "Fourteen", \
                  15: "Fifteen", 16: "Sixteen", 17: "Seventeen", 18: "Eighteen", 19: "Nineteen", \
                  20: "Twenty", 30: "Thirty", 40: "Forty", 50: "Fifty", 60: "Sixty", \
                  70: "Seventy", 80: "Eighty", 90: "Ninety"}
            res=""
    
            if num/100!=0 and num%100==0:
                res=lookup[num/100]+" "+"Hundred"
                return res
            elif num/100!=0 and num%100!=0:
                res=lookup[num/100]+" "+"Hundred"+" "
                num%=100
            if num/10==0:
                res+=lookup[num%10]
            elif num<21:
                res+=lookup[num]
            elif num%10!=0: 
                res+=lookup[num-num%10]+" "+lookup[num%10]
            else:
                res+=lookup[num-num%10]
            return res
            
            
        unit=["","Thousand","Million","Billion"]
        count=0
        res=[]
        temp=[]
        if num==0:
            return "Zero"
        while num>0:
            temp.append(num%1000)
            num/=1000
        for i in range(len(temp)):
            
            if temp[i]==0:
                continue
            if i==0:
                res.append(helper(temp[i]))
            else:
                res.append(helper(temp[i])+" "+unit[i])
                
            
        return ' '.join(res[::-1])
        
                

你可能感兴趣的:(273. Integer to English Words)