您的位置:首页 > 其它

LeetCode(13)-- RomanToInteger

2017-07-18 10:17 387 查看
这道题和上一道题刚好相反,是将罗马数字转变为整数型数字。可以发现一个规则就是当前一个字母小于下一位时则代表减去该数,如“IV”,此处的‘I’表示-1,而“VII”此处的‘I’表示+1,且因为一个字母最多重复三次,所以尽可能出现一次小数在大数前面,即不会出现“IIV”。因此利用该规律编写代码如下:

class Solution {
public:
int romanToInt(string s) {
map<char, int> romanToInt;
int sum = 0;
char Roman[] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
int Integer[] = {1,5,10,50,100,500,1000};
for (int i = 0; i < 7; i++)
{
romanToInt.insert(make_pair(Roman[i], Integer[i]));
}
for (int j = 0; j < s.size(); j++)
{
if (romanToInt[s[j]] >= romanToInt[s[j + 1]])
sum += romanToInt[s[j]];
else
sum -= romanToInt[s[j]];
}
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: