数字转换对应的英语单词

例如: 1-->one

100--one hundred.

表示。。。这道题基本是得以前见过才能写出来的。 [我在做这道题的时候脑子里一团混乱, 1. 一直想着one, two, three, four, tens, twentys, hundres, ...billions 基本所有的数字的英语单词然而忽略了一些线索。 2. 脑袋里一直有一种想要数 num几位数的implementation  ]

核心思想是把数字分成几个bucket: Billion, Million, Thousand。 然后第一步先确认integer在哪一个范围内。这个bucket的设计无比的巧妙,自习看会发现每个bucket之间有一个1000的倍数。我们拿到int的时候,从最大的bucket开始判断, 也就是Billion。如果小于Billion,拿Million试看看。如果大于Million,我们基本知道num最多也就是几百million因为到1000million就进位到billion了。 然后取一下具体是多少million, 先写下来: X million. 这个X, less than 1000, 可以用另一个function 来专门负责处理这么千位数范围内的转换。

然后取一下这个num 最大位后面的数。 比如三百二十万,先去掉最大的百万位,还剩20万。num这时候等于20万, 然后我们重复刚刚的步骤iteratively 来写下这个数。


仔细分析了一下,这个算法竟然跟人们生活中转换数字和单词完全一样。 我们先看看最大位是个啥,然后写下来,然后第二大位的写下来。【大家都是从左往右写字嘛】

这么分析下来,当一个人第一次见到这个题目。逻辑上应该注意到如果分解整个Int成几个bucket的大位数。 我觉得能够做到这一步应该是很不容易了,第一次做就能推算出来bucket size为1000 并且是在面试中做到就有点太厉害了。。(也不是不可能,突破口在于英语里的大位数基本就是billion, million, thousand. 不过一般很容易脑子里浮现的全是one, ten, hundred, thoudsand, million, billion而注意不到这个细节)


*补充一下:

convert hundres to string:  

return LESS_THAN_20[num / 100] + " Hundred " + trans(num % 100);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,863评论 0 33
  • a drop in the ocean 沧海一粟 within a stone’s throw 一箭之遥 kill...
    静_静_阅读 1,398评论 0 1
  • 英语数词 基本内容 基数词的表示法 1.以下是最基本的基数词,学习者必须牢记:one(1), two(2), th...
    小绿植物阅读 1,611评论 0 1
  • 第三、四章主要介绍了关于弗洛伊德的理论以及相关研究。且不说他那么多让我惊叹不已的理论有多么振奋人心,我想每...
    小扉儿阅读 192评论 0 2
  • 今天是周末,但你依然要去上学。 踩着阳光和爸爸妈妈一起吃早饭, 你打开了一瓶味动力, 开了一个小口慢慢吸允着。 妈...
    wzqzde阅读 391评论 0 0

友情链接更多精彩内容