13.C語言/羅馬數字轉整數
阿新 • • 發佈:2019-01-03
先上題目:
思路:這道題比較容易,關鍵在於I,X,C的運算會受後一位(右邊一位)數字的影響。
int romanToInt(char* s) { int i,result=0; for(i=0;i<strlen(s);i++){ if(s[i]=='I') if(s[i+1]=='V'||s[i+1]=='X') s[i]='O'; if(s[i]=='X') if(s[i+1]=='L'||s[i+1]=='C') s[i]='P'; if(s[i]=='C') if(s[i+1]=='D'||s[i+1]=='M') s[i]='Q'; switch(s[i]) { case 'I': result=result+1; break; case 'V': result=result+5; break; case 'X': result=result+10; break; case 'L': result=result+50; break; case 'C': result=result+100; break; case 'D': result=result+500; break; case 'M': result=result+1000; break; case 'O': result=result-1; break; case 'P': result=result-10; break; case 'Q': result=result-100; break; default: break; } } return result; }
第一次用了最暴力的做法,與if-else if-else巢狀為同種做法。感覺太丟臉了,我大概是來湊字數的,後續更新更高效做法,努力努力