题意:将罗马数字转换为阿拉伯数字
转换规则:M = 1000 D = 500
C = 100 L = 50 X = 10
V = 5 I = 1,比较相邻的两个字符,如果右侧的字符大于左侧的字符,则当前字符代表负数;如果小于等于,则当前字符代表正数。需要注意到一些边界。
class Solution { public: int romanToInt(string s) { int dict[26]; dict['M' - 'A'] = 1000; dict['D' - 'A'] = 500; dict['C' - 'A'] = 100; dict['L' - 'A'] = 50; dict['X' - 'A'] = 10; dict['V' - 'A'] = 5; dict['I' - 'A'] = 1; int len = s.length(); int result = 0; int flag = 1; for(int i = 0; i < len; i++) { if (i + 1 < len) { if (dict[s[i+1] - 'A'] > dict[s[i] - 'A']) { flag = -1; } else { flag = 1; } } else { flag = 1; } result += dict[s[i] - 'A'] * flag; } return result; } };