leetcode第一题,正整数转英语书面语
2015-09-16 14:18
246 查看
123 -> "One Hundred Twenty Three" 12345 -> "Twelve Thousand Three Hundred Forty Five" 1234567 -> "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
代码
class Solution(object): def numberToWords(self, num): """ :type num: int :rtype: str """ return self.__eng_num(num, 0) __ORD = ['', 'Thousand', 'Million', 'Billion'] __low_Twenty = ['', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen'] __high_Twenty = ['Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety'] def __eng_2(self, num): if num < 20: return self.__low_Twenty[num] else: h = num / 10 l = num % 10 if l == 0: #zero condition return self.__high_Twenty[h-2] return self.__high_Twenty[h-2] + ' ' + self.__low_Twenty[l] def __eng_3(self, num): h = num / 100 l = num % 100 e2 = self.__eng_2(l) if h == 0: #zero condition return e2 else: if e2 == '': #zero condition return self.__low_Twenty[h] + ' Hundred' + e2 return self.__low_Twenty[h] + ' Hundred' + ' ' + e2 def __eng_num(self, num, order): if (num == 0): return 'Zero' quotient = num / 1000 remainder = num % 1000 mid_res = '' e3 = self.__eng_3(remainder) if order > 0 and not (e3 == ''): #zero condition mid_res = e3 + ' ' + self.__ORD[order] else: mid_res = e3 if (quotient == 0): return mid_res else: if mid_res == '': #zero condition return self.__eng_num(quotient, order+1) + mid_res return self.__eng_num(quotient, order+1) + ' ' + mid_res
因为考虑不周提交了好几次,终于通过了
相关文章推荐
- IP Address-2015
- maven中pom.xml中的scope讲解
- php统计数组中各项的个数用函数array_count_values
- Https(SSL/TLS)原理详解
- Lua基础
- uva 11324 The Largest Clique(强连通分量 + DAG)
- Zoho客户故事:小企业如何利用技术提高销售/市场效率
- java通用抹去魔,在边界行动,擦除补偿
- python日积月累之join()
- AUB集合的并集
- iOS程序执行
- MySql学习知识
- APNS推送原理
- Asp编码优化技巧
- SpannableString 给TextView添加不同的显示样式
- SpannableString 给TextView添加不同的显示样式
- 基于OpenSSL自建CA和颁发SSL证书
- C语言算法小练习-1
- SpannableString 给TextView添加不同的显示样式
- Harris角点