leetcodes solutions 13 Roman to Integer

匯總

雪之下雪乃:leetcode解題總匯?

zhuanlan.zhihu.com圖標

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)一花一世界,編程的世界很大很奇蹟(上)
加碼編程,少年創學院尋找新業務增長點
決定入駐知識星球

TAG:編程 | 演算法 | 數據結構 |