美文网首页LeetCode每日一题
LeetCode每日一题:罗马数字转整数

LeetCode每日一题:罗马数字转整数

作者: Patarw | 来源:发表于2020-08-09 19:58 被阅读0次

    大体思路就是遍历字符串中的每一个字符,并且让当前字符对应的数字大小与之前的数字相比较,如果比前一个数大的话那就减去前一个数,如果比前一个数小的话就加上前一个数,直到最后一个字符,最后一个字符就可以直接加了
    时间复杂度:O(N),只遍历一次数组
    空间复杂度:O(1),只用了常数级别的空间

    • 代码实现:
     class Solution {
    public int romanToInt(String s) {
        if(s == null){
            return 0;
        }
        int res = 0;
        int temp = 0;
        for(int i = 0;i < s.length();i++){
            int n = getValue(s.charAt(i));
            if(i != 0){
                if(temp < n){
                    res = res - temp;
                }else{
                    res = res + temp;
                }
            }
            temp = n;
        }
        res = res + getValue(s.charAt(s.length() - 1));
        return res;
    }
    
    public int getValue(char a){
        switch(a){
            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;
            default:return 0;
        }
    }
    }

    相关文章

      网友评论

        本文标题:LeetCode每日一题:罗马数字转整数

        本文链接:https://www.haomeiwen.com/subject/gwkrdktx.html