中级农民
- 积分
- 103
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-3-24
- 最后登录
- 1970-1-1
|
public class Solution {
public String f(int n) {
if (n == 0) return "zero";
boolean pos = n > 0;
long num = n;
if (num < 0) num = -num;
String[] a1 = new String[] {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
String[] a2 = new String[] {"", "", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"};
String[] base = new String[] {"", "thousand", "million", "billion"};
int b = 0;
int d = 1;
while (num/d >= 1000) {
b++;
d *= 1000;
}
StringBuilder sb = new StringBuilder();
while (b >= 0) {
int v = (int)(num/d);
if (v >= 100) {
sb.append(a1[v/100]+" hundred ");
v %= 100;
}
if (v < 20) {
sb.append(a1[v]);
} else {
sb.append(a2[v/10]+" "+a1[v%10]);
}
sb.append(" "+base[b]+" ");
b--;
num %= d;
d /= 1000;
}
String ret = sb.toString().trim();
return pos ? ret : "minus "+ret;
}
}
Test:
4 four
14 fourteen
123 one hundred twenty three
12345 twelve thousand three hundred fourty five
1000 one thousand
100 one hundred
10 ten
1 one
0 zero
2147483647 two billion one hundred fourty seven million four hundred eighty three thousand six hundred fourty seven
-2147483648 minus two billion one hundred fourty seven million four hundred eighty three thousand six hundred fourty eight |
|