Leetcode 273. 整数转换英文表示
- 整数转换英文表示
将非负整数 num 转换为其对应的英文表示。
示例 1:
输入:num = 123
输出:“One Hundred Twenty Three”
示例 2:
输入:num = 12345
输出:“Twelve Thousand Three Hundred Forty Five”
示例 3:
输入:num = 1234567
输出:“One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
示例 4:
输入:num = 1234567891
输出:“One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One”
提示:
0 <= num <= 231 - 1
class Solution {
//1 - 9 的英文单词
String[] low = {"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};
//10 - 19 的英文单词
String[] mid = {"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
//20 - 90 的英语单词
String[] high = {"","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};
public String numberToWords(int num) {
if(num == 0)return "Zero";
//划分大单位 --- 每三位一个大单位
int a = num % 1000;
num /= 1000;
int b = num % 1000;
num /= 1000;
int c = num % 1000;
num /= 1000;
int d = num % 1000;
String ans = "";
if(d != 0){
ans = buildNumber(d) + " Billion ";
}
if(c != 0){
ans += buildNumber(c) + " Million ";
}
if(b != 0){
ans += buildNumber(b) + " Thousand ";
}
if(a != 0){
ans += buildNumber(a);
}
return ans.trim();//去除头尾的空格符
}
//划分小单位
public String buildNumber(int num){
int a = num % 10;
num /= 10;
int b = num % 10;
num /= 10;
int c = num % 10;
String ans = "";
if(c != 0){
ans = low[c] + " Hundred ";
}
if(b == 0){
ans += low[a];
}else if(b ==1){
ans += mid[a] + " ";
}else{
ans += high[b] + " ";
if(a != 0){
ans += low[a] + " ";
}
}
return ans.trim();//去除头尾的空格符
}
}
执行结果:
通过
显示详情
执行用时:13 ms, 在所有 Java 提交中击败了42.93% 的用户
内存消耗:38.7 MB, 在所有 Java 提交中击败了26.88% 的用户