leetcode12. 整数转罗马数字
发布人:shili8
发布时间:2025-02-06 07:48
阅读次数:0
**整数转罗马数字**
罗马数字是古罗马人使用的数字系统,主要用于计数和记录。罗马数字由七个符号组成:I、V、X、L、C、D 和 M,每个符号代表不同的值。
在本题中,我们需要实现一个函数,将整数转换为罗马数字。这个函数应该能够处理任意正整数,并返回相应的罗马数字表示。
**解决方案**
我们可以使用以下方法来解决这个问题:
1. 首先,定义一个数组来存储罗马数字的值和对应的符号。
2. 然后,根据给定的整数值,从大到小遍历该数组,并将相应的符号添加到结果中。
3. 如果当前符号的值等于或小于整数值中的剩余部分,我们就可以直接添加这个符号。
4. 否则,我们需要在结果中添加一个较大的符号(比如,X、C 或 M),然后再添加几个较小的符号(比如,I、V 或 L)。
**代码示例**
class Solution: def intToRoman(self, num: int) -> str: # 定义罗马数字的值和对应的符号 roman_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') ] # 初始化结果 result = '' # 遍历罗马数字的值和对应的符号 for value, symbol in roman_values: # 如果当前符号的值等于或小于整数值中的剩余部分,我们就可以直接添加这个符号 while num >= value: result += symbol num -= value return result
**代码注释**
* `roman_values` 是一个列表,存储罗马数字的值和对应的符号。
* `result` 是一个字符串,用于存储最终的罗马数字表示。
* 在循环中,我们首先检查当前符号的值是否等于或小于整数值中的剩余部分。如果是,我们就可以直接添加这个符号,并减去相应的值。
* 如果不是,我们需要在结果中添加一个较大的符号,然后再添加几个较小的符号。
**测试**
我们可以使用以下测试用例来验证我们的函数:
solution = Solution() print(solution.intToRoman(3)) # Output: IIIprint(solution.intToRoman(4)) # Output: IVprint(solution.intToRoman(9)) # Output: IXprint(solution.intToRoman(13)) # Output: XIIIprint(solution.intToRoman(44)) # Output: XLIVprint(solution.intToRoman(99)) # Output: XCIXprint(solution.intToRoman(499)) # Output: CDXCIXprint(solution.intToRoman(999)) # Output: CMXCIX
这些测试用例可以帮助我们确保我们的函数正确地将整数转换为罗马数字。