题目:整数转罗马数字

使用到的是类似哈希表的结构

当当前数字大于此时values中存储的值时,认为其满足“如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字”的条件,需要找到此时value对应的key,拼接到res的末尾

注意:在这里,我们将4,9,10等特殊值直接存储到哈希表结构中,因为可以原算法就是通过顺序遍历的方法进行对应值的筛选

intToRoman()

 1string intToRoman(int num)
 2    {
 3        std::array<int, 13> values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
 4        std::array<std::string, 13> keys = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
 5        std::string res = "";
 6        for(int i = 0; i < 13; i++)
 7        {
 8            while(values[i] <= num)
 9            {
10                num -= values[i];
11                res += keys[i];
12            }
13        }
14        return res;
15    }

来源:语雀原笔记