Java 版本
import java.util.*;
public class Solution {
public String num2cn(int n) {
if (n == 0)
return "零";
char[] words = String.valueOf(Math.abs(n)).toCharArray();
String[] unitsMap = new String[]{"", "十", "百", "千", "", "万", "亿"};
String[] digitsMap = new String[]{"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
StringBuilder builder = new StringBuilder();
for (int cnt = 0, len = Math.min(words.length, 4); len > 0; len = Math.min(words.length - cnt * 4, 4)) {
StringBuilder segBuilder = new StringBuilder();
int pos = words.length - 1 - cnt * 4;
boolean full0 = true;
for (int i = len - 1; i >= 0; i--) {
int val = words[pos - i] - '0';
if (val != 0) {
full0 = false;
if (words[pos - i] == '0') {
segBuilder.append(digitsMap[0]);
}
segBuilder.append(digitsMap[val]).append(unitsMap[i]);
}
}
if (!full0)
segBuilder.append(unitsMap[cnt + 4]);
builder.insert(0, segBuilder);
cnt++;
}
String val = builder.toString().replaceAll("^一十","十");
return n < 0 ? "负" + val : val;
}
}