题目:
阿拉伯数字转化为罗马数字
解题思路:
设置两个vector,一个放罗马数字,一个放罗马数字所对应的阿拉伯数字;
从给定数字num的最高位开始,逐位转化;n-=2;
如果该位数字是1-3,则在结果字符串上加上该位数字大小个roman[n]
如果该位数字是4,则在结果字符串上加上roman[n] + roman[n-1]
如果改为数字是5-8,则在结果字符串上加上roman[n-1] + 若干个roman[n]
如果该位数字是9,则在结果字符串上加上roman[n]+roman[n-2];
代码:
class Solution { public:string intToRoman(int num) {string res = "";vector<char> roman = { 'M', 'D', 'C', 'L', 'X', 'V', 'I' };vector<int> value = { 1000, 500, 100, 50, 10, 5, 1 };for (int n = 0; n < 7; n += 2) {int x = num / value[n];if (x >= 1 && x <= 3) {for (int i = 0; i < x; i++) {res += roman[n];}}else if (x == 4) {res = res + roman[n] + roman[n - 1];}else if (x >= 5 && x <= 8) {res += roman[n - 1];for (int i = 5; i < x; i++) {res += roman[n];}}else if (x == 9) {res = res + roman[n] + roman[n - 2];}num %= value[n];}return res;} };