LeetCode13. 罗马数字转整数

题目链接:

13. 罗马数字转整数 - 力扣(LeetCode)

思路分析:通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。我们通过res来记录最后的答案。

算法分析:只涉及数学问题,没有算法知识。

参考代码:

cpp 复制代码
class Solution {
public:
    unordered_map<char,int>values={//存储每个罗马数字对应的值 方便取出
        {'I',1},
        {'V',5},
        {'X',10},
        {'L',50},
        {'C',100},
        {'D',500},
        {'M',1000},
    };
    int romanToInt(string s) {
        int res=0;//最终的结果
        int n=s.size();
        for(int i=0;i<n;++i){//遍历数组
            int temp=values[s[i]];//取出第i为的值
            if(i<n-1&&temp<values[s[i+1]]){//如果它不是最后一个数且小于下一位
                res-=temp;//答案的基础上减去
            }else{//否则加上这个值
                res+=temp;
            }
        }
        return res;
    }
};
相关推荐
宵时待雨8 分钟前
C++笔记归纳17:哈希
数据结构·c++·笔记·算法·哈希算法
问好眼23 分钟前
《算法竞赛进阶指南》0x05 排序-1.电影
c++·算法·排序·信息学奥赛
CoderCodingNo25 分钟前
【GESP】C++八级考试大纲知识点梳理 (6) 图论算法:最小生成树与最短路
c++·算法·图论
DeepModel29 分钟前
【特征选择】嵌入法(Embedded)
人工智能·python·深度学习·算法
今儿敲了吗1 小时前
算法复盘——前缀和
笔记·学习·算法
ulias2121 小时前
智能指针简述
开发语言·c++·算法
寻寻觅觅☆1 小时前
东华OJ-基础题-58-素数表(C++)
开发语言·c++·算法
AI成长日志1 小时前
【强化学习专栏】深度拆解:多智能体强化学习核心理论与工程实践
算法
Flying pigs~~1 小时前
基于TF_IDF和Bagging的文本分类全过程
算法·随机森林·机器学习·nlp·文本分类
树獭叔叔1 小时前
FFN 激活函数深度解析:从 ReLU 到 SwiGLU 的演进之路
算法·aigc·openai