题目链接
英文链接:https://leetcode.com/problems/integer-to-english-words/
中文链接:https://leetcode-cn.com/problems/integer-to-english-words/
题目详述
将非负整数转换为其对应的英文表示。可以保证给定输入小于 2^31 - 1 。
示例 1:
1 | 输入: 123 |
示例 2:
1 | 输入: 12345 |
示例 3:
1 | 输入: 1234567 |
示例 4:
1 | 输入: 1234567891 |
题目详解
- 为了方便处理,用一个哈希表存储数字与单词的映射关系。
- 对问题进行分解,3 位作为一组,配合
thousand
、million
、billion
即可表示10^12
以内的所有数,即xxx billion xxx million xxx thousand xxx
。 - 然后考虑如何表示 1000 以内的数,可以分为以下 方式:
- 如果大于等于 100,需要先写
x hundred
。 - 如果末两位不超过 20,直接输出对应的单词。
- 如果末两位是 10 的倍数,直接输出对应的单词。
- 如果末两位大于 20,输出对应的十位与个位。
- 如果大于等于 100,需要先写
- 时间复杂度分析:计算量与 n 的十进制表示的位数成正比,所以时间复杂度是 O(logn)。
1 | public class LeetCode_00273 { |