每日算法——letcode系列
Roman to Integer
Difficulty: Easy
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {public: int romanToInt(string s) { }};
翻译
罗马数字转整数
难度系数:简单
给定一个罗马数字,转成整数。
输入的数的范围在1到3999间
思路
罗马数字有一个左右大小的问题。
代码
class Solution {public: int romanToInt(string s) { if (s.empty()){ return 0; } int result = romanCharMap(s[0]); for (size_t i = 1; i < s.size(); ++i){ int prev = romanCharMap(s[i - 1]); int curr = romanCharMap(s[i]); if (prev < curr) { result += - prev + (curr-prev); } else{ result += curr; } } return result; } private: int romanCharMap(char c){ switch(c){ case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; } return 0; } };