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 qian=0,bai=0,shi=0,ge=0;
int Cnum=0,Dnum=0,Mnum=0,Xnum=0,Lnum=0,Inum=0,Vnum=0;
for(int i=0;i<s.length();i++){
if(s[i]=='M'){
if(Cnum){
bai=9;
}else{
qian++;
}
}
if(s[i]=='C'){
if(Xnum){
shi=9;
}else{
if(Dnum){
Cnum++;
bai=Cnum+5;
}else{
Cnum++;
bai++;
}
}
}
if(s[i]=='D'){
if(Cnum){
bai=4;
}else{
bai=5;
}
Dnum=1;
}
if(s[i]=='X'){
if(Inum){
ge=9;
}else{
if(Lnum){
Xnum++;
shi=Xnum+5;
}else{
Xnum++;
shi++;
}
}
}
if(s[i]=='L'){
if(Xnum){
shi=4;
}else{
shi=5;
}
Lnum=1;
}
if(s[i]=='I'){
if(Vnum){
Inum++;
ge=Inum+5;
}else{
Inum++;
ge++;
}
}
if(s[i]=='V'){
if(Inum){
ge=4;
}else{
ge=5;
}
Vnum=1;
}
}
int result=qian*1000+bai*100+shi*10+ge;
return result;
}
};