另外由Wiki的說明:
羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。
所以筆者在程式中寫了個轉換函式number。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | class Solution { public: short number(char c) { short num; switch(c) { case 'I': num = 1; break; case 'V': num = 5; break; case 'X': num = 10; break; case 'L': num = 50; break; case 'C': num = 100; break; case 'D': num = 500; break; case 'M': num = 1000; break; default: num = 0; break; } return num; } short getValue(const string& s ) { short preValue = 1000, curValue, value = 0; short len = s.length(); for( int i = 0; i < len; i++ ) { curValue = number(s[i]); value += curValue; if( curValue > preValue ) value -= 2 * preValue; preValue = curValue; } return value; } /** * @param s Roman representation * @return an integer */ int romanToInt(string& s) { // Write your code here return (int)getValue(s); } }; |
沒有留言:
張貼留言