题解 | #人民币转换#
人民币转换
https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
let numArr = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
let danArr = ["拾", "佰", "仟"];
let daArr = ["万", "亿"];
// 处理元的函数
function yuan (str) {
let newStr = ''
let newArr = []
for (let i = str.length; i > 0; i -= 4) {
newArr.unshift(str.substring(i - 4, i))
}
for (let i = 0; i < newArr.length; i++) {
for (let j = 0; j < newArr[i].length; j++) {
newStr += numArr[parseInt(newArr[i][j])]
if (j == newArr[i].length - 2 && parseInt(newArr[i][j]) == 1) {
newStr = newStr.substring(0, newStr.length - 1)
}
if (j != newArr[i].length - 1 && newArr[i][j] != '0') {
newStr += danArr[newArr[i].length - 2 - j]
}
}
if (newStr.includes('零零零')) {
newStr = newStr.replace('零零零', '')
}
if (newStr.includes('零零')) {
newStr = newStr.replace('零零', '零')
}
if (newStr[newStr.length - 1] == '零') {
newStr = newStr.substring(0, newStr.length - 1)
}
if (newArr[i].length == 2 && newStr[0] == '壹') {
newStr = newStr.replace('壹', '')
}
if (i != newArr.length - 1) {
newStr += daArr[newArr.length - 2 - i]
}
}
return newStr
}
// 处理角和分的函数
function ling (str) {
let newStr = ''
if (str[0] !== '0') {
newStr += numArr[parseInt(str[0])] + '角'
}
if (str[1] !== '0') {
newStr += numArr[parseInt(str[1])] + '分'
}
return newStr
}
void (async function () {
// Write your code here
let line = await readline();
let str = "人民币";
let tokens = line.split(".");
if (tokens[1] == "00") {
str += yuan(tokens[0]) + "元整";
} else {
if (tokens[0] == "0") {
str += yuan(tokens[0]) + ling(tokens[1]);
} else {
str += yuan(tokens[0]) + "元" + ling(tokens[1]);
}
}
console.log(str);
})();


查看14道真题和解析