题目描述
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) {
if (s == null || s.length() == 0)
return 0;
HashMap<Character, Integer> map = new HashMap<>();
map.put('I', 1);
map.put('V', 5);
map.put('X', 10);
map.put('L', 50);
map.put('C', 100);
map.put('D', 500);
map.put('M', 1000);
int ret = 0;
int pre = 0;
for (int i = s.length()-1; i >= 0; i--) {
char c = s.charAt(i);
int val = map.get(c);
if (val >= pre) {
ret += val;
pre = val;
}
else
ret -= val;
}
return ret;
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于