本文共 1240 字,大约阅读时间需要 4 分钟。
题目:
4000以内的整数转罗马数字
解答:
先将1-9 10 - 90 100 - 900 1000 - 4000 的整数对应的罗马数字存成map
然后逐次取千位 百位 十位 个位 对应的数值 进行匹配得出结果。
代码:
class Solution { public: string intToRoman(int num) { mapir; ir.insert(pair (1, "I")); ir.insert(pair (2, "II")); ir.insert(pair (3, "III")); ir.insert(pair (4, "IV")); ir.insert(pair (5, "V")); ir.insert(pair (6, "VI")); ir.insert(pair (7, "VII")); ir.insert(pair (8, "VIII")); ir.insert(pair (9, "IX")); ir.insert(pair (10, "X")); ir.insert(pair (20, "XX")); ir.insert(pair (30, "XXX")); ir.insert(pair (40, "XL")); ir.insert(pair (50, "L")); ir.insert(pair (60, "LX")); ir.insert(pair (70, "LXX")); ir.insert(pair (80, "LXXX")); ir.insert(pair (90, "XC")); ir.insert(pair (100, "C")); ir.insert(pair (200, "CC")); ir.insert(pair (300, "CCC")); ir.insert(pair (400, "CD")); ir.insert(pair (500, "D")); ir.insert(pair (600, "DC")); ir.insert(pair (700, "DCC")); ir.insert(pair (800, "DCCC")); ir.insert(pair (900, "CM")); ir.insert(pair (1000, "M")); ir.insert(pair (2000, "MM")); ir.insert(pair (3000, "MMM")); int x = 1000; int t = 0; string s = ""; while (num) { t = num / x * x; s = s + ir[t]; num = num - t; x = x / 10; } return s; } };
转载地址:http://rytsi.baihongyu.com/