13.Roman to Integer

来源:互联网 发布:ibatis mysql 分页 编辑:程序博客网 时间:2024/05/20 21:19

Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.

解析:1、M=1000 D=500 C=100 L=50 X=10 V=5 I=1

2、若小的罗马符号出现在大的罗马符号的前面,则小的罗马符号代表的数字改为负。这种情况只能出现有限的情况。

public class Solution {    public int romanToInt(String s) {        char com = 'a';        int flag = 0;        int res = 0;        for(int i=s.length()-1;i>=0;i--){            com = s.charAt(i);            switch (com) {            case 'I':                if(flag >= 1){                    res -= 1;                }else{                    res += 1;                }                flag = 0;                break;            case 'V':                res += 5;                flag = 1;                break;            case 'X':                if(flag >= 3){                    res -= 10;                }else{                    res += 10;                }                flag = 2;                break;            case 'L':                res += 50;                flag = 3;                break;            case 'C':                if(flag >= 5){                    res -= 100;                }else{                    res += 100;                }                flag = 4;                break;            case 'D':                res += 500;                flag = 5;                break;            case 'M':                res += 1000;                flag = 6;                break;            default:                break;            }        }        return res;    }}

这个方法是看的别人哒,觉得不错
这里写图片描述

0 0