当前位置: 面试刷题>> 罗马数字转整数 (经典算法题500道)


### 题目描述 罗马数字是古罗马使用的一种数字系统,它采用不同符号来表示不同的数值,相同的符号因位置不同可能表示不同的数,例如 I=1, V=5, X=10, L=50, C=100, D=500, M=1000。一个罗马数字通常由这些符号的序列组成,例如 "III" 表示 3,"IV" 表示 4,"VI" 表示 6,"MCMXCIV" 表示 1994。罗马数字的特点是: - 当一个符号在另一个符号的左边并且小于它时,表示两个数相加,如 "IV"=4,"VI"=6。 - 当一个符号在另一个符号的左边并且不小于它时,表示右边的数要减去左边的数,如 "IV"=5-1=4,"IX"=10-1=9。 给定一个罗马数字字符串,将其转换成整数。 ### 示例 - 输入:"III" - 输出:3 - 输入:"IV" - 输出:4 - 输入:"IX" - 输出:9 - 输入:"LVIII" - 输出:58 - 输入:"MCMXCIV" - 输出:1994 ### PHP 示例代码 ```php function romanToInt($s) { $map = [ 'I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000, ]; $total = 0; $prev = 0; $length = strlen($s); for ($i = $length - 1; $i >= 0; $i--) { $value = $map[$s[$i]]; if ($value < $prev) { $total -= $value; } else { $total += $value; } $prev = $value; } return $total; } // 测试 echo romanToInt("III"); // 输出 3 echo romanToInt("IV"); // 输出 4 ``` ### Python 示例代码 ```python def romanToInt(s: str) -> int: roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} total = 0 prev = 0 for char in reversed(s): value = roman_map[char] if value < prev: total -= value else: total += value prev = value return total # 测试 print(romanToInt("III")) # 输出 3 print(romanToInt("IV")) # 输出 4 ``` ### JavaScript 示例代码 ```javascript function romanToInt(s) { const romanMap = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, }; let total = 0; let prev = 0; for (let i = s.length - 1; i >= 0; i--) { const value = romanMap[s[i]]; if (value < prev) { total -= value; } else { total += value; } prev = value; } return total; } // 测试 console.log(romanToInt("III")); // 输出 3 console.log(romanToInt("IV")); // 输出 4 ``` **码小课网站中有更多相关内容分享给大家学习**,包括但不限于算法、数据结构、编程语言进阶等内容,帮助大家更好地提升编程能力。
推荐面试题