题目:整数转罗马数字
当当前数字大于此时values中存储的值时,认为其满足“如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字”的条件,需要找到此时value对应的key,拼接到res的末尾
注意:在这里,我们将4,9,10等特殊值直接存储到哈希表结构中,因为可以原算法就是通过顺序遍历的方法进行对应值的筛选
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 }
来源:语雀原笔记