[leetcode] Integer to English Words
来源:互联网 发布:怎么用阿里云 caffe 编辑:程序博客网 时间:2024/05/16 12:18
1道模拟题花了2个多小时,我也是醉了。一方面由于好久没有刷题了,一方面这道题乱七八糟的细节特别多。于是就想简单总结下。
题意:
将整型数字(231-1以内)转化成英文单词,如:
思路很普通:
2^31 = 2 147 483 648,
我们可以将数字转化成字符串后,每3个字符分为1组,整体字符串无非就是每组数字构成的串+“Billion/Million/Thousand”之类;可以自定义一个子函数来求3位以内的数的英文表示,这里需要提前将0-9、10-19、20、30、40、...、90之类的英文表示存入数组中,以便利用下标来访问,有点儿哈希的意思。
考虑到python的灵便性,于是便用python来编码了;由于两个单词之间用空格“ ”连接,而用字符串时不太好控制何时加空格,何时不加,例如1001,我一开始用字符串时就搞成了one-thousand--one(且用‘-’表示空格);其实可以先用list来存储每个单词,最后再用空格将它们连接起来就好了。
详细代码如下:
class Solution(object): def num2str(self,snum): hsh = ("Zero","One","Two", "Three", "Four", "Five", "Six", "Seven", "Eight","Nine") hsh1 = ("Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen") hsh2 = ("","","Twenty", "Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety") sstr = [] lenth = len(snum) if lenth == 3: if(int(snum[0]))>0: sstr.extend([hsh[int(snum[0])],"Hundred"]) if int(snum[1])>1: sstr.append(hsh2[int(snum[1])]) if int(snum[2])>0: sstr.append(hsh[int(snum[2])]) elif int(snum[1])==1: sstr.append(hsh1[int(snum[2])]) else: if (int(snum[2])>0): sstr.append(hsh[int(snum[2])]) elif lenth == 2: if int(snum[0])>1: sstr.append(hsh2[int(snum[0])]) if int(snum[1])>0: sstr.append(hsh[int(snum[1])]) elif int(snum[0])==1: sstr.append(hsh1[int(snum[1])]) elif lenth == 1: sstr.append(hsh[int(snum[0])]) return (' ').join(sstr) def numberToWords(self, num): """ :type num: int :rtype: str """ tbl = (""," Thousand "," Million "," Billion ") numstr = str(num) sstr = "" lenth = len(numstr) while lenth > 0: mod = lenth % 3 if mod == 0: mod = 3 if len(self.num2str(numstr[0:mod]))>0: sstr += self.num2str(numstr[0:mod]) sstr += tbl[(lenth-1) / 3] numstr = numstr[mod:] lenth = len(numstr) if(sstr[-1]==' '): sstr = sstr[0:-1] return sstr
0 0
- leetcode - Integer to English Words
- [leetcode] Integer to English Words
- Integer to English Words -- leetcode
- [LeetCode] Integer to English Words
- LeetCode -- Integer to English Words
- 【LeetCode】Integer to English Words
- LeetCode Integer to English Words
- Leetcode: Integer to English Words
- leetcode:Integer to English Words
- 【LeetCode】Integer to English Words
- [leetcode] 273.Integer to English Words
- [leetcode-273]Integer to English Words(java)
- [leetcode 273]Integer to English Words
- LeetCode-Integer to English Words-解题报告
- leetcode刷题-Integer to English Words
- LeetCode之Integer to English Words
- 【LeetCode】Integer to English Words 解题报告
- LeetCode 题解(210) : Integer to English Words
- X Window 程式设计入门
- 检验通信主机是否在线
- codecombat安息之云山峰32-36关及森林49关代码分享
- mongodb关闭服务
- 循环输出10次ABC
- [leetcode] Integer to English Words
- linux 中的单引号 和双引号有什么区别
- Android APK加壳技术方案【2】
- Terminal查看表结构
- ionic js input光标重新定位
- iOS分类(Category)和类扩展(Extension)的简单用法
- 年终巨献 史上最全 ——LINQ to SQL语句
- 对memcached使用的总结和使用场景
- Android的app运行后手机里不显示图标和文字处理方法