我的回答(半小时内没有回答出来)
很感慨,leetCode上用while比较频繁,而我工作中几乎没用过,所以很难去想起它
function intToRoman(num: number): string {
let str = "";
const romaMap = new Map([
[1000, "M"],
[900, "CM"],
[500, "D"],
[400, "CD"],
[100, "C"],
[90, "XC"],
[50, "L"],
[40, "XL"],
[10, "X"],
[9, "IX"],
[5, "V"],
[4, "IV"],
[1, "I"],
]);
romaMap.forEach((value,key)=>{
if (num >= key) {
num-=key
}
str+=key
})
return str;
}
console.log(intToRoman(3));
其他回答
function intToRoman(num: number): string {
let str = "";
const romaList = [
[1000, "M"],
[900, "CM"],
[500, "D"],
[400, "CD"],
[100, "C"],
[90, "XC"],
[50, "L"],
[40, "XL"],
[10, "X"],
[9, "IX"],
[5, "V"],
[4, "IV"],
[1, "I"],
];
for (const [key, value] of romaList) {
while (num >= +key) {
num -= +key;
str += value;
}
if (num === 0) break;
}
return str;
}