首页 > 代码库 > 13. Roman to Integer
13. Roman to Integer
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。