0
点赞
收藏
分享

微信扫一扫

LeetCode 13.罗马数字转整数 每日一题

上善若水山西太原 2022-05-03 阅读 57

问题描述

Java

class Solution {
    public int romanToInt(String s) {
        if(s == null || s.length() == 0) return 0;

        int len = s.length();
        char[] arr = s.toCharArray();
        int pre = getValue(arr[0]);
        int ans = 0;
        for(int i = 1;i < len;i++){
            int cur = getValue(arr[i]);
            //如果前一个字符比当前字符要大,那就加上前字符
            if(pre >= cur){
                ans += pre;
            }else {
                ans -= pre;
            }
            pre = cur;
        }
        ans += pre;
        return ans;
    }
    public int getValue(char c){
        switch(c){
            case 'I':
                return 1;
            case 'V':
                return 5;
            case 'X':
                return 10;
            case 'L':
                return 50;
            case 'C':
                return 100;
            case 'D':
                return 500;
            case 'M':
                return 1000;
        }
        return 0;
    }
}

 

举报

相关推荐

0 条评论