#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
int romanToInt(string s) {
int length = s.length();
int sum = 0;
for(int i = 0; i < length; ++i){
switch(s[i]){ //大括号
case 'I': //case判断语句没有括号,句尾加冒号,语句块也不需要大括号
if(i<length-1 && s[i+1]=='V'){
sum += 4;
++i;} //两个字符连起来的时候,这里先主动加1
else if(i<length-1 && s[i+1]=='X'){
sum += 9;
++i;}
else
sum += 1;
break; //此处不加break就会一直往下执行switch的语句块
case 'V':
sum += 5;
break;
case 'X':
if(i<length-1 && s[i+1]=='L'){
sum += 40;
++i;
}
else if(i<length-1 && s[i+1]=='C'){
sum += 90;
++i;
}
else
sum += 10;
break;
case 'L':
sum += 50;
break;
case 'C':
if(i<length-1 && s[i+1]=='D'){
sum += 400;
++i;
}
else if(i<length-1 && s[i+1]=='M'){
sum += 900;
++i;
}
else
sum += 100;
break;
case 'D':
sum += 500;
break;
case 'M':
sum += 1000;
break;
}
}
return sum;
}
};
int main()
{
string a("MCMXCIV");
Solution sol;
cout << sol.romanToInt(a) << endl;
return 0;
}
【LeetCode013】Roman to Integer
猜你喜欢
转载自blog.csdn.net/weixin_39458342/article/details/86659445
今日推荐
周排行