解題關鍵在於觀察羅馬數字的計算邏輯,歡迎分享更短的寫法~
PS: 剛剛更換網頁字型,文章被吃掉好幾次,嗚嗚。゚ヽ(゚´Д`)ノ゚。
int romanToInt(char * s){
int sum=0,a=0,b=0,input,last_input=0,flag;size_t len = strlen(s);
for(int i=len-1;i>=0;i--){
if(s[i]=='I') input=1;
else if(s[i]=='V') input=5;
else if(s[i]=='X') input=10;
else if(s[i]=='L') input=50;
else if(s[i]=='C') input=100;
else if(s[i]=='D') input=500;
else if(s[i]=='M') input=1000;
if(last_input!=0){
if(input==last_input){
sum=sum+input;
}else if(input>last_input){
sum=sum+input;
}else if(input<last_input){
sum=sum-input;
}
}else{
sum=sum+input;
}
last_input=input;
}
return sum;
}
沒有留言:
張貼留言