题目:
阿拉伯数字转化为罗马数字
解题思路:
设置两个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 = ""; vectorroman = { 'M', 'D', 'C', 'L', 'X', 'V', 'I' }; vector 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; }};