栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【leetcode】13. 罗马数字转整数(python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【leetcode】13. 罗马数字转整数(python)


方法一:对特殊情况直接写条件筛选
class Solution:
    def romanToInt(self, s: str) -> int:
        dic = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M':1000}
        res = 0
        n = len(s) - 1
        for i in range(n, -1, -1): # 前闭后开
            if i == n:
                res += dic[s[i]]
            elif (s[i] == 'I' and s[i + 1] in ['V', 'X']) or 
                (s[i] == 'X' and s[i + 1] in ['L', 'C'] ) or 
                (s[i] == 'C' and s[i + 1] in ['D', 'M']):
                res -= dic[s[i]]
            else:                
                res += dic[s[i]]
            # print(s[i], res)
        return res
方法二:模拟

若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。

class Solution:
    def romanToInt(self, s: str) -> int:
        dic = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M':1000}
        res = 0
        for i in range(len(s) - 1):
            if dic[s[i]] < dic[s[i + 1]]:
                res -= dic[s[i]]
            else:
                res += dic[s[i]]
        res += dic[s[-1]]
        return res
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号