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


### 题目描述 编写一个函数,将给定的整数转换为罗马数字。罗马数字采用七个不同的符号:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000),这些符号可以重复使用以表示更大的数字,但也有一些规则限制其组合方式,如: - I 可以放在 V 和 X 的左边,来表示 4 和 9。 - X 可以放在 L 和 C 的左边,来表示 40 和 90。 - C 可以放在 D 和 M 的左边,来表示 400 和 900。 - 同一数字符号最多只能连续使用三次(如:III, XXX, CCC)。 - 不能使用超过一个 M(1000)来表示数字。 给定一个整数,将其转换成罗马数字表示。 ### 示例 输入: 3 输出: "III" 输入: 4 输出: "IV" 输入: 9 输出: "IX" 输入: 58 输出: "LVIII" 输入: 1994 输出: "MCMXCIV" ### PHP 示例代码 ```php function intToRoman($num) { $values = [1000 => 'M', 900 => 'CM', 500 => 'D', 400 => 'CD', 100 => 'C', 90 => 'XC', 50 => 'L', 40 => 'XL', 10 => 'X', 9 => 'IX', 5 => 'V', 4 => 'IV', 1 => 'I']; $roman = ''; foreach ($values as $value => $symbol) { while ($num >= $value) { $roman .= $symbol; $num -= $value; } } return $roman; } echo intToRoman(1994); // 输出: MCMXCIV ``` ### Python 示例代码 ```python def intToRoman(num): values = [(1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')] roman = '' for value, symbol in values: while num >= value: roman += symbol num -= value return roman print(intToRoman(1994)) # 输出: MCMXCIV ``` ### JavaScript 示例代码 ```javascript function intToRoman(num) { const values = [[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']]; let roman = ''; for (let [value, symbol] of values) { while (num >= value) { roman += symbol; num -= value; } } return roman; } console.log(intToRoman(1994)); // 输出: MCMXCIV ``` 以上代码均实现了将整数转换为罗马数字的功能,并考虑了罗马数字的组成规则。在实际的面试中,根据具体要求,可能还需要对输入进行一些边界条件的检查,比如负数输入等。
推荐面试题