哈哈,有了上個題的經驗,我們是不是應該趁熱打鐵呢?這次是講一個羅曼的(羅馬)數字轉化為一個整形數字,所以我們逆向去推理上個題,其實這個題很有規律的,將string數組遍歷一遍就可以求解了,廢話不多說,見代碼:
class Solution { public: int romanToInt(string s) { //和上道題剛好相反 int lastnum = 0; int len = s.size(); if(len < 1) { return lastnum; } int i = 0; while( i < len) { switch(s[i]) { case 'M': //1000 lastnum+=1000; ++i; break; case 'D': //500 lastnum+=500; i++; break; case 'C': //100 { if(i+1需要注意的是那些特殊的數字的表示方法,例如'4'->(IV), '9'->(IX), '40'->(XL),'90'->(XC),'400'->(CD),'900'->(CM).
最後還是附上這個吧!^_^