leetcode中Roman to Integer 问题

leetcode中Roman to Integer 问题


###Roman to Integer问题描述

Given a roman numeral, convert it to an integer.

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

即要求将罗马数字转化为int类型

java代码

public class Solution {
    public int romanToInt(String s) {
        int res = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
            char c = s.charAt(i);
            switch (c) {
            case 'I':
                res += (res >= 5 ? -1 : 1);
                break;
            case 'V':
                res += 5;
                break;
            case 'X':
                res += 10 * (res >= 50 ? -1 : 1);
                break;
            case 'L':
                res += 50;
                break;
            case 'C':
                res += 100 * (res >= 500 ? -1 : 1);
                break;
            case 'D':
                res += 500;
                break;
            case 'M':
                res += 1000;
                break;
            }
        }
        return res;
    } }

问题分析

在罗马数字中I=1 , V=5 , X=10 , L=50 , C=100 , D=500 , M=1000
重复数次:一个罗马数字重复几次,就表示这个数的几倍
右加左减:
在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字
在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字