class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串 */ string A[10] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; string B[4] = {"", "十", "百", "千"}; string C[4] = {"", "万", "亿", "万亿"}; vector<string> tmp; string ans = ""; void fun2(int part, string ans) { bool lastZero = true; int pos = 0; while (part > 0) { int now = part % 10; part /= 10; if (now == 0) { if (!lastZero) { tmp.push_back(A[0]); lastZero = true; } } else { lastZero = false; tmp.push_back(B[pos]); tmp.push_back(A[now]); } pos++; } } string fun(int num) { if(num == 0) return A[0]; int pos = 0; string ans = ""; bool last = false; while (num > 0) { int part = num % 10000; num /= 10000; if (last) { tmp.push_back(A[0]); last = false; } if (part > 0 && part < 1000) last = true; if(part > 0) tmp.push_back(C[pos]); fun2(part, ans); pos++; } int n = tmp.size() - 1; if(n - 1 >= 0 && tmp[n - 1] == "十" && tmp[n] == "一") n--; for(int i = n; i >= 0; i--) ans += tmp[i]; return ans; } string num2cn(int n) { // write code here if(n < 0) { ans = "负"; n = -n; } ans += fun(n); return ans; } };