273. Integer to English Words

273. Integer to English Words

class Solution:
    def numberToWords(self, num: int) -> str:
        to19='One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve ' \
        'Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen'.split()
        tens='Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety'.split()
        def words(n):
            if n<20:
                return to19[n-1:n]
            if n<100:
                return [tens[n//10-2]]+words(n%10)
            if n<1000:
                return [to19[n//100-1]]+['Hundred']+words(n%100)
            for p,w in enumerate(('Thousand','Million','Billion'),1):
                # print(p,w)
                if n<1000**(p+1):
                    return words(n//(1000**p))+[w]+words(n%(1000**p))
        return ' '.join(words(num)) or 'Zero'

模拟题

for p,w in enumerate(('Thousand','Million','Billion'),1):

p从1开始

你可能感兴趣的:(leetcode)