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'))
    
  • 相关阅读:
    [转] DataSet的的几种遍历
    [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)
    C# 在根据窗体中的表格数据生成word文档时出错
    【剑指offer】堆栈推弹出序列
    kettle于javascript步骤错误处理
    【算法导论】堆排序
    malloc,free简单的实现
    Lichee (六) 优化配置的微内核
    EJBCA于Linux安装在
    【C++】智能指针auto_ptr简单的实现
  • 原文地址:https://www.cnblogs.com/HavenBlog/p/14307836.html
Copyright © 2011-2022 走看看