LeetCode 13 罗马数字转整数
1. 题目地址
https://leetcode.cn/problems/roman-to-integer/description/
2. 题解
这道题的解题过程非常简单,具体如下:
1. 我们需要将罗马数字对应的数,存到一个哈希表中。待用到时,直接使用即可。
2. 对于正常情况讲(前面的罗马数字大于后面的罗马数字),当我们遍历到一个罗马数字之后,直接累加其值即可。
3. 对于题目中的例外情况,我们发现:该二元组后面的罗马数字要大于前面的罗马数字,因此我们直接累加:后面的罗马数字值 - 前面的罗马数字值即可。需要注意的是:我们需要判断边界(该罗马数字后面一定要有数)
3. 代码
class Solution {
public:
int romanToInt(string s) {
int result = 0;
unordered_map<char,int> h;
h['I'] = 1;
h['V'] = 5;
h['X'] = 10;
h['L'] = 50;
h['C'] = 100;
h['D'] = 500;
h['M'] = 1000;
for(int i = 0;i < s.size(); i++){
//如果该数字后面有数且后面的值大于前面的值(属于例外情况)
if(i + 1 < s.size() && h[s[i]] < h[s[i+1]]){
result += h[s[i+1]] - h[s[i]];
//跳过该二元组,进入下一个罗马数字
i++;
}else{
result += h[s[i]];
}
}
return result;
}
};
标签:13,int,后面,罗马数字,result,LeetCode
From: https://www.cnblogs.com/gao79135/p/17747602.html