leetcode-013 Roman to Integer

将罗马数字转为整数

思路:

(1)首先应该有个字典,存储罗马数字和阿拉伯数字之间的对应关系。

(2)遍历字符串,比较前后两个数的大小,如果后一个数比前一个数小,则加上后一个数,否则,减去后一个数。

为了防止数组索引越界,从后往前取,首先将最后一个数的值存进去,再一次和它的前一个数进行比较,如果前一格比它

大,则加上前一个,否则减去前一个。

java实现:

public int romanToInt2(String s) {
        if(s==null||s.length()==0){
            return -1;
        }
        HashMap<Character, Integer> map=new HashMap<Character,Integer>();
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);
        int length=s.length();
        int result=map.get(s.charAt(length-1));
        for (int i =length-2; i >=0; i--) {
            if(map.get(s.charAt(i+1))<=map.get(s.charAt(i))){
                result+=map.get(s.charAt(i));
                
            }else{
                result-=map.get(s.charAt(i));
            }
            
        }
        return result;
            
        }

python实现:

class Solution:
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
        length=len(s)
        preval=0
        result=0
        for i in range(length-1,-1,-1):
            value=dict[s[i]]
            if(value>=preval):
                result+=value
            else:
                result-=value
            preval=value
        return result 

猜你喜欢

转载自blog.csdn.net/orangefly0214/article/details/82596281