码迷,mamicode.com
首页 > 其他好文 > 详细

13. Roman to Integer

时间:2016-09-10 11:39:00      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

思路:之前一直觉得罗马数字好麻烦,一刷的时候看到就头疼不想做。看了看wiki之后感觉其实也还好。这道题直接给了一个valid罗马数字,就可以直接从后往前算,不用考虑那么多规则了,除了小在大前面要用大减小之外,其他就累加。用hashmap存一下对应的值,然后用一个prev来存一下后一位的罗马数字用来比较current即可。

罗马数字ref:https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97

public class Solution {
    public int romanToInt(String s) {
        int res=0;
        Map<Character,Integer> save=new HashMap<Character,Integer>();
        save.put(‘I‘,1);
        save.put(‘V‘,5);
        save.put(‘X‘,10);
        save.put(‘L‘,50);
        save.put(‘C‘,100);
        save.put(‘D‘,500);
        save.put(‘M‘,1000);
        int prev=0;
        for(int i=s.length()-1;i>=0;i--)
        {
            int current=save.get(s.charAt(i));
            if(current>=prev)
            {
                res+=current;
            }
            else
            {
                res-=current;
            }
            prev=current;
        }
        return res;
    }
}

 

13. Roman to Integer

标签:

原文地址:http://www.cnblogs.com/Machelsky/p/5858980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!