✨博文作者 wangzirui32
💖 喜欢的可以 点赞 收藏 关注哦~~
👉本文首发于优快云,未经许可禁止转载
1. 题目描述
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/roman-to-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题思路
我们可以创建一个字典,将每单个罗马数字与阿拉伯数字作为键值对,构成罗马数字表,然后使用for
循环键值对(k
和v
),检测字符串s
中存在几个k
, 有一个k
就有一个v
,可以使用乘法计算,然后去除字符串中所有k
,然后,进入下一次循环,最后返回结果。
3. 代码实现
Code:
class Solution:
def romanToInt(self, s: str) -> int:
"""罗马数字转整数"""
"""注意:这里IV,IX等特殊的罗马数字在字典的前面,这是为了避免转换错误。"""
roman_table = {
"IV": 4,
"IX": 9,
"XL": 40,
"XC": 90,
"CD": 400,
"CM": 900,
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000,
}
result = 0 # 结果
for k, v in roman_table.items(): # 遍历字典
result += s.count(k) * v # 查询k的数量 * k所代表的值(v)
s = s.replace(k, "") # 替换k 避免重复计算
return result
4. 最终结果
🎉🎉🎉 好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!