/*
5.将罗马数字转换成整数。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) {
int res = 0;
for(int i=0;i<s.size();++i){
res += getNum(s[i]);
}
int pre = 0;
int cur = getNum(s[0]);
for(int i=1;i<s.size();++i){
pre = cur;
cur = getNum(s[i]);
if(pre*5 == cur || pre*10 ==cur){
res -= pre*2;
}
}
return res;
}
int getNum(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;
default:
return 0;
}
}
};
转载请注明原文地址: https://ju.6miu.com/read-33658.html