参考了Yuwen's Hero的题解,以及blackwasp对罗马计数系统的定义
不解的是根据定义的第三条规则,为什么不能不能用LD代替450, 用VL代替45呢 —— 因为有个测试点说明45应该是XLV
理解的朋友麻烦告诉我声,谢。
代码:
class Solution { public: string intToRoman(int num) { // 没有450, 和45 int digit[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; string str[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; string ret; for (int i = 0; i < sizeof(digit)/sizeof(int); ++ i) { while (num >= digit[i]) { num -= digit[i]; ret += str[i]; } } return ret; } };