P167 罗马数字转阿拉伯数字
算法 19 阅读
信号摘要
难度:Easy · 时长:08:14 · leetcode 13 · lintcode 419
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你一个罗马数字,你要将它转成阿拉伯数字。其中,给出的罗马数字表示范围在 1 到 3999 之间。
比如说,给你的罗马数字是 III,你要将它转成数字 3;再比如说,给你的罗马数字是 IV,你要将它转成数字 4。
代码
public class AlgoCasts {
private static final int[] mapping = new int[256];
static {
mapping['I'] = 1;
mapping['V'] = 5;
mapping['X'] = 10;
mapping['L'] = 50;
mapping['C'] = 100;
mapping['D'] = 500;
mapping['M'] = 1000;
}
// Time: O(n), Space: O(1)
public int romanToInt(String s) {
int n = s.length();
int result = mapping[s.charAt(n-1)];
for (int i = n-2; i >= 0; --i) {
int cur = mapping[s.charAt(i)];
int right = mapping[s.charAt(i+1)];
if (cur < right) result -= cur;
else result += cur;
}
return result;
}
}