现在的位置: 首页 > 综合 > 正文

Roman to Integer

2019年07月26日 ⁄ 综合 ⁄ 共 482字 ⁄ 字号 评论关闭

题意:将罗马数字转换为阿拉伯数字

转换规则: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;
    }
};

抱歉!评论已关闭.