上一篇我们讲到了将阿拉伯数字转换成罗马数字,这一篇反其道行之。
将罗马数字转换为整数的方法是从左到右遍历罗马数字字符串,依据罗马数字的规则进行相应的加减操作。下面是一个将罗马数字转换为整数的 JavaScript 函数实现:
/**
* 将罗马数字转换为整数
* @param {string} s - 输入的罗马数字字符串
* @return {number} - 转换后的整数
*/
function romanToInt(s) {
const romanToIntMap = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};
let total = 0;
let prevValue = 0;
for (let i = s.length - 1; i >= 0; i--) {
const currentValue = romanToIntMap[s[i]];
if (currentValue >= prevValue) {
total += currentValue;
} else {
total -= currentValue;
}
prevValue = currentValue;
}
return total;
}
// 示例使用
const romanStr = "MCMXCIV";
const number = romanToInt(romanStr);
console.log(number); // 输出: 1994
代码解释
1. 定义罗马数字与整数的映射
- 使用对象
romanToIntMap
将每个罗马数字字符映射到对应的整数值。
2. 从右向左遍历字符串
- 初始化
total
为 0,用于存储结果整数。 - 初始化
prevValue
为 0,用于存储上一个字符的整数值。
3. 遍历罗马数字字符串
- 获取当前字符的整数值
currentValue
。 - 如果当前值大于或等于前一个值,则将当前值加到
total
上;否则,从total
中减去当前值。 - 更新
prevValue
为当前值,以便在下次迭代时使用。
4. 返回结果
- 遍历完成后,
total
即为转换后的整数。
通过这种方法,可以高效地将罗马数字字符串转换为对应的整数值。