• 13.罗马数字转整数


    题目来源:

    力扣icon-default.png?t=M85Bhttps://leetcode.cn/problems/roman-to-integer/题目简介:

    就是把罗马数字转化成阿拉伯数字。

    思路1:

    确定好每个罗马字母所对应的值,遍历整个字符串,后一个字符小于前一个字符,两字符就是相加,后一个字符大于前一个字符,两字符就是相减,当没有下一位时,做加法即可。

    代码实现:

    import java.util.*;

    class Solution {
        public int romanToInt(String s) {
            int sum = 0;
            int preNum = getValue(s.charAt(0));
            for(int i = 1;i < s.length(); i ++) {
                int num = getValue(s.charAt(i));
                if(preNum < num) {
                    sum -= preNum;
                } else {
                    sum += preNum;
                }
                preNum = num;
            }
            sum += preNum;
            return sum;
        }
        
        private int getValue(char ch) {
            switch(ch) {
                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;
            }
        }
    }

    思路二:哈希表

    简单的把switch函数换成键值指对

    class Solution {
    private:
        unordered_map symbolValues = {
            {'I', 1},
            {'V', 5},
            {'X', 10},
            {'L', 50},
            {'C', 100},
            {'D', 500},
            {'M', 1000},
        };

    public:
        int romanToInt(string s) {
            int ans = 0;
            int n = s.length();
            for (int i = 0; i < n; ++i) {
                int value = symbolValues[s[i]];
                if (i < n - 1 && value < symbolValues[s[i + 1]]) {
                    ans -= value;
                } else {
                    ans += value;
                }
            }
            return ans;
        }
    };
     

  • 相关阅读:
    【YOLOv5入门】目标检测
    Java反射详解,还有什么理由学不会
    11 抽象向量空间
    结构型模式-过滤器模式
    生产脚本1
    @Transactional 注解使用详解
    java计算机毕业设计航帆学院网站MyBatis+系统+LW文档+源码+调试部署
    Java回顾-集合-Map-HashMap/LinkedHashMap/TreeSet/Properties
    用C语言将无符号整数转换为字符串
    计算机网络-网络层篇-IP协议
  • 原文地址:https://blog.csdn.net/stay_awake__/article/details/126891222