LeetCode#13. Roman to Integer

来源:互联网 发布:局域网im软件 编辑:程序博客网 时间:2024/06/08 04:04
  • 题目:将数值在1-3999的罗马数转成阿拉伯数
  • 难度:Easy
  • 思路:从后往前遍历罗马字符串,如果当前的罗马数表示的值小于已经遍历求得的值并且不等于前一个罗马数,则说明需要减去当前的罗马数表示的值,否则相加
  • 代码:
public class Solution {    public int romanToInt(String s) {        if(s == "") return 0;        HashMap<Character,Integer> map = new HashMap<>();        map.put('I',1);        map.put('X',10);        map.put('C',100);        map.put('M',1000);        map.put('V',5);        map.put('L',50);        map.put('D',500);        int number = 0;        char prev = '#';        for (int i = s.length() - 1; i >= 0; i--) {            char ch = s.charAt(i);            int value = map.get(ch);            if (value < number && ch != prev) {                number = number - value;            } else {                number = number + value;            }            prev = ch;        }        return number;    }}
0 0