每日算法——letcode系列
问题 Roman to Integer
Difficulty: Easy
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
int romanToInt(string s) {
}
};
翻译
罗马数字转整数
难度系数:简单
给定一个罗马数字,转成整数。
输入的数的范围在1到3999间
思路
罗马数字有一个左右大小的问题。
代码
class Solution {
public:
int romanToInt(string s) {
if (s.empty()){
return 0;
}
int result = romanCharMap(s[0]);
for (size_t i = 1; i < s.size(); ++i){
int prev = romanCharMap(s[i - 1]);
int curr = romanCharMap(s[i]);
if (prev < curr) {
result += - prev + (curr-prev);
}
else{
result += curr;
}
}
return result;
}
private:
int romanCharMap(char c){
switch(c){
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
}
return 0;
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。