• 罗马数字转整数


    罗马数字转整数

    1、题目:

    2、代码

    罗马数字转整数
    '''
    思路一:首先将罗马字符和数字的对应关系放到字典里,循环遍历,将循环到的字符和当前的字符加后一位的比较,如果只拿到当前循环的字符则累加返回结果,如果拿到的
    后两个字符是特殊字符,则将当前的字符用当前的字符加后一位字符覆盖,再依次累加得出结果,如果循环到最后一位的时候,取到两个结果相同,则将当前的字符再累加
    '''
    class Solution:
        roman_dic = {
            'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000,
            'IV': 4, 'IX': 9,
            'XL': 40, 'XC': 90,
            'CD': 400, 'CM': 900,
        }
        def romanToInt(self,s):
            number = 0
            flag = False
            for n,i in enumerate(s):
                if flag:
                    flag = False
                    continue
                num1 = self.roman_dic.get(i)
                num2 = self.roman_dic.get(s[n:n+2])
                if num2 is not None and num1 != num2:
                    num1 = num2
                    flag = True
                number += num1
            return number
    
    s = Solution()
    print(s.romanToInt('LVIII'))
    
    '''
    思路二:循环遍历字符串,如果当前的字符比下一个字符小,则为特殊字符,用下一个字符减去当前的字符,覆盖当前拿到的这个数字,再用continue跳出下一个循环
    '''
    
    class Solution:
        roman_dic = {
            'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000,
            'IV': 4, 'IX': 9,
            'XL': 40, 'XC': 90,
            'CD': 400, 'CM': 900,
        }
    
        def romanToInt(self, s):
            number = 0
            flag = False
            for n,i in enumerate(s):
                if flag:
                    flag = False
                    continue
    
                num1 = self.roman_dic.get(i)
                if n == len(s)-1:
                    number += num1
                    break
                num2 = self.roman_dic.get(s[n+1])
                if num1 < num2:
                    num1 = num2-num1
                    flag = True
    
                number += num1
            return number
    
    s = Solution()
    print(s.romanToInt('LVIII'))
    
  • 相关阅读:
    Visual Studio Code使用NVM指定的节点版本
    webpackd学习的意义
    scss--函数 (Functions)--unit
    scss--函数 (Functions)--unitless
    JS中的事件绑定,事件捕获,事件冒泡以及事件委托,事件参数(event.target,e.srcElement,event.currentTarget,),兼容IE
    移动端rem
    单例模式
    代理模式
    装饰者模式
    策略模式
  • 原文地址:https://www.cnblogs.com/HavenBlog/p/14307836.html
Copyright © 2020-2023  润新知