Skip to content

Commit dbab9cc

Browse files
authored
Update Integer to English Words.java
1 parent 91d6481 commit dbab9cc

File tree

1 file changed

+11
-21
lines changed

1 file changed

+11
-21
lines changed

Java/Integer to English Words.java

+11-21
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
H
2-
1525229518
3-
tags: Math, String
2+
1533443082
3+
tags: Math, String, Enumeration
44

55
给一个小于 Integer.MAX_VALUE (2^31 - 1) 的数字, 转换成英语. (不需要加 'and')
66

77
#### String
88
- 基本implementation
9-
- 分类讨论: thounsand, million, billion. 3个数字一格.
9+
- `分类讨论`: thounsand, million, billion. `3个数字一格`.
1010
- 用array枚举 token
1111
- 运用 % / 来找到每个分段的英语翻译
1212
- 3-digit 的部分, 可以用一个helper funtion来找到结果, 每段的处理方法都是一样的
1313

1414
#### 注意
15-
- StringBuffer 更有效率
16-
- 注意加 " " 的时候, 如果多余, 要trim()
15+
- StringBuffer 更有效率! `sb.insert(0, xxx)` append在sb前面
16+
- 注意加 " " 的时候, 如果多余, 要`trim()`
1717
- 注意, 小于20的数字, 有自己的特殊写法, 需要额外handle
18-
- 这道题目就是要细致耐心, 算法并不难, 就是想要写的efficient并且正确, 需要很小心
18+
- 这道题目就是要细致`耐心`, 几乎么有什么算法, 就是想要写的efficient并且正确, 需要很小心
1919
2020
2121
```
@@ -49,24 +49,16 @@ class Solution {
4949
public String[] v1 = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
5050
public String[] v2 = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
5151
public String[] v3 = {"", "Thousand ", "Million ", "Billion "};
52-
5352
public String numberToWords(int num) {
54-
if (num < 0) {
55-
return "";
56-
}
57-
if (num == 0) {
58-
return "Zero";
59-
}
53+
if (num < 0) return "";
54+
if (num == 0) return "Zero";
6055

6156
StringBuffer sb = new StringBuffer();
6257
for (int i = 0; i < 4; i++) {
63-
// Obtain smaller number, handle Thousand, Million, Billion
64-
int partial = num - (num / 1000) * 1000;
65-
if (partial > 0) {
66-
// Append suffix depending on i:
58+
int partial = num % 1000; // Obtain smaller 3-digit section
59+
if (partial > 0) { // Append suffix depending on i, where v3[0] = "";
6760
sb.insert(0, calcPartialNumber(partial) + " " + v3[i]);
6861
}
69-
// Shrink by 1000
7062
num /= 1000;
7163
}
7264

@@ -75,14 +67,12 @@ public String numberToWords(int num) {
7567

7668
private String calcPartialNumber(int num) {
7769
StringBuffer sb = new StringBuffer();
78-
// Handle 100's
7970
if (num >= 100) {
8071
int hund = num / 100;
8172
sb.append(v1[hund] + " Hundred ");
8273
num = num % 100;
8374
}
8475

85-
// Calculate number < 100
8676
if (num < 20) {
8777
sb.append(v1[num] + " ");
8878
} else {
@@ -173,4 +163,4 @@ public String helper(int num, int i) {
173163
return str;
174164
}
175165
}
176-
```
166+
```

0 commit comments

Comments
 (0)