题目描述
有一个非负整数,请编写一个算法,打印该整数的英文描述。
给定一个int x,请返回一个string,为该整数的英文描述。
测试样例:
1234
返回:"One Thousand,Two Hundred Thirty Four"
class ToString:
def toString(self, num):
# write code here
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):
#[(1, 'Thousand'), (2, 'Million'), (3, 'Billion')]
if n < 1000 ** (p+1):
return words(n//1000 ** p) + [w] + words(n % 1000 ** p)
return " ".join(words(num)).replace("Thousand ","Thousand,").replace("lion ","lion,") or "Zero"