leetcode_Roman to Integer_easy_可以看看方法

来源:互联网 发布:windows version 1703 编辑:程序博客网 时间:2024/05/21 08:50

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

主要弄清楚罗马数字的表示方法:

I - 1

II- 2

III-3

IV-4

V - 5

X - 10

L - 50

C - 100

D - 500

M - 1000


class Solution {public:    int romanToInt(string s) {        map<char,int> mapVal;        mapVal.insert(pair<char,int>('I',1));        mapVal.insert(pair<char,int>('V',5));        mapVal.insert(pair<char,int>('X',10));        mapVal.insert(pair<char,int>('L',50));        mapVal.insert(pair<char,int>('C',100));        mapVal.insert(pair<char,int>('D',500));        mapVal.insert(pair<char,int>('M',1000));        int len=s.length(),res=0,i;        for(i=0; i<len-1; )        {            if(mapVal[s[i]]>=mapVal[s[i+1]])//单个字符代表数值的情况比如V代表5            {                res+=mapVal[s[i]];                i++;            }            else//2个字符代表数值的情况,比如IV代表4            {                res+=mapVal[s[i+1]]-mapVal[s[i]];                i=i+2;            }           }        if(i==len-1)            res+=mapVal[s[i]];        return res;    }};



0 0
原创粉丝点击