当前位置: 面试刷题>> 例 154单词表示数字 (经典算法题500道)


**题目描述**: "例 154单词表示数字" 是一个经典的编程题目,其目标是解析一个由英文字母(大小写均考虑)组成的字符串,这些字母可以代表不同的数字,并组合起来形成一个有效的数学表达式。例如,在常用的映射中,"I" 代表 1,"V" 代表 5,"X" 代表 10,"L" 代表 50,"C" 代表 100,"D" 代表 500,"M" 代表 1000。但是,有些情况下,如 "IV" 或 "IX",它们并不代表直接的加法(即不是 1+5=6 或 1+9=10),而是表示减法,即 "IV" 代表 4("V" 减去前面的 "I"),"IX" 代表 9("X" 减去前面的 "I")。类似地,"XL" 代表 40,"XC" 代表 90,"CD" 代表 400,"CM" 代表 900。 给定一个这样的字符串,编写一个函数来计算并返回它所代表的数字。 **示例**: - 输入: "III" - 输出: 3 - 输入: "IV" - 输出: 4 - 输入: "IX" - 输出: 9 - 输入: "LVIII" - 输出: 58 - 输入: "MCMXCIV" - 输出: 1994 **PHP 示例代码**: ```php function romanToInt($s) { $romanMap = [ 'I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000 ]; $total = 0; $prevValue = 0; for ($i = strlen($s) - 1; $i >= 0; $i--) { $currentValue = $romanMap[$s[$i]]; if ($currentValue < $prevValue) { $total -= $currentValue; } else { $total += $currentValue; } $prevValue = $currentValue; } return $total; } echo romanToInt("MCMXCIV"); // 输出: 1994 ``` **Python 示例代码**: ```python def romanToInt(s): roman_map = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 } total = 0 prev_value = 0 for char in reversed(s): current_value = roman_map[char] if current_value < prev_value: total -= current_value else: total += current_value prev_value = current_value return total print(romanToInt("MCMXCIV")) # 输出: 1994 ``` **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 prevValue = 0; for (let i = s.length - 1; i >= 0; i--) { const currentValue = romanMap[s[i]]; if (currentValue < prevValue) { total -= currentValue; } else { total += currentValue; } prevValue = currentValue; } return total; } console.log(romanToInt("MCMXCIV")); // 输出: 1994 ``` **码小课**:在码小课网站上,你可以找到更多关于算法和数据结构的学习资源,包括详细的讲解、练习题以及实战项目,帮助你更好地掌握编程技能。
推荐面试题