題目:
阿拉伯數字轉化為羅馬數字
?
解題思路:
設置兩個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;} };
?