Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
1 int romanToInt(char* s) { 2 int map[26] = {0}; 3 map['I'-'A'] = 1; 4 map['V'-'A'] = 5; 5 map['X'-'A'] = 10; 6 map['L'-'A'] = 50; 7 map['C'-'A'] = 100; 8 map['D'-'A'] = 500; 9 map['M'-'A'] = 1000; 10 int len = strlen(s); 11 int n,nn; 12 int sum = 0; 13 for(int i =0; i < len; i++){ 14 if(i != len-1){ 15 n = map[s[i]-'A']; 16 nn = map[s[i+1]-'A']; 17 if(nn>n){ 18 sum+=(nn-n); 19 i++; 20 } 21 else 22 sum += n; 23 24 } 25 else 26 sum += map[s[len-1]-'A']; 27 } 28 29 return sum; 30 }
字符串的是从左边开始的
1 class Solution(object): 2 def romanToInt(self, s): 3 """ 4 :type s: str 5 :rtype: int 6 """ 7 8 d = {'M':1000, 'D':500, 'C':100, 'L':50, 'X':10, 'V':5, 'I':1} 9 res, p = 0, 'I' 10 for c in s[::-1]: 11 res, p = res - d[c] if d[c] < d[p] else res + d[c], c 12 return res 13
res,p 是元组