LeetCode--Roman to Integer 羅馬數字轉化成整數
阿新 • • 發佈:2018-12-31
題目:Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
羅馬數轉化成數字問題,我們需要對於羅馬數字很熟悉才能完成轉換。以下截自百度百科:
羅馬數字是最早的數字表示方式,比阿拉伯數字早2000多年,起源於羅馬。 如今我們最常見的羅馬數字就是鐘錶的錶盤符號:Ⅰ,Ⅱ,Ⅲ,Ⅳ(IIII),Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ…… 對應阿拉伯數字(就是現在國際通用的數字),就是1,2,3,4,5,6,7,8,9,10,11,12。(注:阿拉伯數字基本字元 | I | V | X | L | C | D | M |
相應的阿拉伯數字表示為 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
class Solution { public: int romanToInt(string s) { int res = 0; unordered_map<char, int> m{{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}}; for (int i = 0; i < s.size(); ++i) { int val = m[s[i]]; if (i == s.size() - 1 || m[s[i+1]] <= m[s[i]]) res += val; else res -= val; } return res; } };