您的位置:首页 > 其它

[LeetCode] 12. Integer to Roman

2018-01-31 19:51 363 查看

12. Integer to Roman

罗马数字规则

题目

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

思路

罗马数字规则

基本表达:I = 1; V = 5; X = 10; L = 50; C = 100; D = 500; M = 1000;

相同数字相连或者小数在大数后面,则表示这些数字相加所得的数,如III=3,CII=102;

小数(限于I, X, C)在大数前面,则表示大数减小数所得的数,如IV=4;

复杂性分析:

时间复杂度:O(n).

空间复杂度:O(1).

题解

class Solution {
public:
string intToRoman(int num) {
string ans;
string romanNum[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int numValue[]    = {1000,900,500,400, 100,  90, 50,  40, 10,   9,  5,   4, 1};

for (int i = 0; num != 0; i++) {
while (num >= numValue[i]) {
num -= numValue[i];
ans += romanNum[i];
}
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: