您的位置:首页 > 其它

LeetCode 13. Roman to Integer

2016-07-24 16:28 411 查看

描述

给出一个罗马数字,让你把它转换成正常的十进制数

解决

关键是要清楚罗马数字转换成10进制数的运算法则。当一个数比它右边的数大的时候,就加上这两个数;当一个数比它右边的数小的时候,加上右边的那个数减去当前数的差。

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