LeetCode题解——Roman to Integer
题目:
将罗马数字转换为整数。
解法:
可以参考上一篇数字转换为罗马数字的规则。
代码:
1 class Solution {
2 public:
3 int sym2int(char sym) //罗马数字字符与数字的对应关系
4 {
5 switch(sym)
6 {
7 case 'I' : return 1;
8 case 'V' : return 5;
9 case 'X' : return 10;
10 case 'L' : return 50;
11 case 'C' : return 100;
12 case 'D' : return 500;
13 case 'M' : return 1000;
14 default : return 0;
15 }
16 }
17
18 int romanToInt(string s) {
19 int result = sym2int(s[0]);
20 for(int i = 1; i < s.size(); ++i)
21 {
22 result += sym2int(s[i]);
23 if(sym2int(s[i]) > sym2int(s[i-1])) //如果当前字符比上一字符对应的值要大,说明这是一个减的过程,由于上一字符之前计算过,所以减2倍
24 result -= 2 * sym2int(s[i-1]);
25 }
26 return result;
27 }
28 };