zoukankan      html  css  js  c++  java
  • 罗马数字转整数

    罗马数字转整数

    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'))
    
  • 相关阅读:
    列表框JList 及动作监听
    WindowListener(附带适配器改良方案)
    常用的几种文本组件(JTextComponent)
    JToggleButton组件
    java实现鼠标拖拽动作监听
    Flex读文本文件
    WPF socket通讯 UDP接收消息
    在线签名,并保存到本地
    flex直接访问服务器
    windows 8各种流之间的转换
  • 原文地址:https://www.cnblogs.com/HavenBlog/p/14307836.html
Copyright © 2011-2022 走看看