美文网首页刷爆力扣
【6】罗马数字转整数

【6】罗马数字转整数

作者: 公孙剑人 | 来源:发表于2021-01-03 15:55 被阅读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;
            }
        }
    

    结果

    执行结果

    相关文章

      网友评论

        本文标题:【6】罗马数字转整数

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