leetcode-13-罗马数字转整数

题目

罗马数字转整数

分析

罗马字符:I-1,V-5,X-10,L-50,C-100,D-500,M-1000
注意:
4-IV,6-VI
所以,需要判断左边的位是否大于右边的位,大于是加,小于是减/

C++代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int (string s) {

map<char,int> a = {{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};
int result = a[s[s.length()-1]];
for(int i = s.length()-2;i>=0;i--){
if(a[s[i]]>=a[s[i+1]])
result+=a[s[i]];
else result-=a[s[i]];
}
return result;
}
};