将罗马数字转换为十进制整数。数据范围为:1~3999
罗马数字由7种字母组成,按照特定规则可以组成任意正整数, 需要注意的是罗马数字中没有”0“.
关于罗马数字具体可以看:这里
附上代码:
1 class Solution {
2 public:
3 int romanToInt(string s) {
4 map<char, int> a;
5 a['I'] = 1;
6 a['V'] = 5;
7 a['X'] = 10;
8 a['L'] = 50;
9 a['C'] = 100;
10 a['D'] = 500;
11 a['M'] = 1000;
12 int n = (int)s.length(), ans = 0;
13 for (int i = 0; i < n; i++) {
14 if (i < n-1 && a[s[i]] < a[s[i+1]]) {
15 ans += a[s[i+1]] - a[s[i]];
16 i++;
17 } else {
18 ans += a[s[i]];
19 }
20 }
21 return ans;
22 }
23 };