上一篇我们讲到了将阿拉伯数字转换成罗马数字,这一篇反其道行之。
将罗马数字转换为整数的方法是从左到右遍历罗马数字字符串,依据罗马数字的规则进行相应的加减操作。下面是一个将罗马数字转换为整数的 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
即为转换后的整数。
通过这种方法,可以高效地将罗马数字字符串转换为对应的整数值。