核心提示:[Codewars]-Roman Numerals Encoder题目:阿拉伯数字转罗马数字 给个对应表 symbol value I 1 V 5 X 10 L 50 C...
[Codewars]-Roman Numerals Encoder
题目:
阿拉伯数字转罗马数字 给个对应表
| symbol | value |
|---|---|
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100 |
| D | 500 |
| M | 1000 |
- ps:2000 -> MM,8000 -> MMMMMMMM
思路:
按照题目,把数字分成几千几百几十很好转换,唯一问题是代码长不美观。
解答:
这不是本人答案,但这是我见过最简洁的答案了
function solution(number){
// convert the number to a roman numeral
var roman = {M:1000,CM:900, D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1 }
var ans = '';
while(number>0){
for(a in roman){
if(roman[a]<=number){ ans += a; number-=roman[a]; break;}
}
}
return ans;
}


