Roman to Integer
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路
罗马数字好累啊,原则就是有个map,大的在右边就是减,左边就是加
I 是1, V是5
IV 4 VI 6
DCXXI X:10 C:100 D:500
621
代码
class Solution {
public:
int romanToInt(string s) {
unordered_map<char, int> rimap= {{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}};
int res;
for(int i = 0; i < s.size()-1; ++ i) {
if(rimap[s[i+1]] > rimap[s[i]]) {
res -= rimap[s[i]];
}
else {
res += rimap[s[i]];
}
}
res += rimap[s[s.size() - 1]];
return res;
}
};
本文介绍了一种将罗马数字转换为整数的方法。通过使用哈希表映射罗马字符到对应的数值,遍历字符串实现转换。特别注意的是,当一个较小的数字位于较大数字左侧时,需要从总和中减去这个小数字。
281

被折叠的 条评论
为什么被折叠?



