您的位置:首页 > 其它

[LeetCode]13. Roman to Integer

2017-04-25 14:11 351 查看

[LeetCode]13. Roman to Integer

题目描述



思路

做一个字符和数字对应的映射,考虑罗马数字的逻辑,IV表示4,而3则用III表示。

因此可能出现的需要考虑的两位字符表示一个数的情况比较简单,只有左边位置的数小于右边位置的数时,才表示右边减左边的值,否则只需要相加即可。

代码

#include <iostream>
#include <string>
#include <unordered_map>

using namespace std;

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 res = t[s[s.size() - 1]];
for (int i = s.size() - 2; i >= 0; --i) {
if (t[s[i]] < t[s[i + 1]])
res -= t[s[i]];
else
res += t[s[i]];
}
return res;
}
};

int main() {
Solution s;
cout << s.romanToInt("IV") << endl;

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: