leetcodes solutions 13 Roman to Integer
05-13
匯總
雪之下雪乃:leetcode解題總匯Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
思路1
這題的關鍵還是搞清楚羅馬數字與阿拉伯數字之間的轉換關係
用一個map來存放相應的數值,從後往前計算
大的值在小的值前面是加,反之則是減
class Solution{public: int romanToInt(string s){ unordered_map<char, int> T = { {I, 1}, {V, 5}, {X, 10}, {L, 50}, {C, 100}, {D, 500}, {M, 1000}}; int sum = T[s.back()]; for(int i = s.length() - 2; i >= 0; --i){ if(T[s[i]] < T[s[i + 1]]){ sum -= T[s[i]]; }else{ sum += T[s[i]]; } } return sum; }};
推薦閱讀:
※從零開始手敲次世代遊戲引擎(四十一)
※沈向洋:You Are What You Write,大家都要看
※Scratch編程之圖形特效(2)一花一世界,編程的世界很大很奇蹟(上)
※加碼編程,少年創學院尋找新業務增長點
※決定入駐知識星球