題目
Given a roman numberal, convert it to an interger.
Input is guaranteed to be within the range from 1 to 3999.
題意
給羅馬數字,輸出數字總和
想法
要考慮左邊的羅馬字或許是減法,參照對照表可容易完成。iterative 一一比對數字,加到總和。
code
int romanToInt(char* s) {
//int len = strlen(s);
int i;
int sum=0;
for(i=0; *(s+i); i++){
if(s[i]=='M')
sum+=1000;
else if(s[i]=='D')
sum+=500;
else if(s[i]=='C'){
if(/*i+1<len && */s[i+1]=='M'){
sum+=900;
i++;
}else if(/*i+1<len && */s[i+1]=='D'){
sum+=400;
i++;
}
else
sum+=100;
}else if(s[i]=='L')
sum+=50;
else if(s[i]=='X'){
if(/*i+1<len && */s[i+1]=='L')
{
sum+=40;
i++;
}
else if(/*i+1<len && */s[i+1]=='C')
{
sum+=90;
i++;
}else
sum+=10;
}else if(s[i]=='V')
sum+=5;
else if(s[i]=='I')
{
if(/*i+1<len && */s[i+1]=='V'){
sum+=4;
i++;
}else if(/*i+1<len && */s[i+1]=='X'){
sum+=9;
i++;
}else
sum+=1;
}
}
return sum;
}