刷爆力扣

【6】罗马数字转整数

2021-01-03  本文已影响0人  公孙剑人

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer

题目

思路

刚看到题目,没有合适的思路,脑子里面出现各种if...else。。翻了下力扣的解答,看到一句话:“前面的数字大,做加法;前面的数字小,做减法”,茅塞顿开,马上开始写代码,然鹅并没有写出来。。
看来自以为理解了本质,其实跟事实仍然存在很大差距,同志仍需努力哇🐶

代码

    public int romanToInt(String s) {
        int result = 0;
        int pre = getValue(s.charAt(0));
        for (int i = 1; i < s.length(); ++i) {
            int curr = getValue(s.charAt(i));
            if (pre < curr) {
                result -= pre;
            } else {
                result += pre;
            }
            pre = curr;
        }
        result += pre;
        return result;
    }

    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;
            default:
                return 0;
        }
    }

结果

执行结果
上一篇下一篇

猜你喜欢

热点阅读