编程(罗马数)

代码

class Solution {
public:
    int romanToInt(string s)
    {
        map<char, int>romeMap;
        romeMap['I']=1;
        romeMap['V']=5;
        romeMap['X']=10;
        romeMap['L']=50;
        romeMap['C']=100;
        romeMap['D']=500;
        romeMap['M']=1000;

        int sum = 0;
        for (int i = s.size() - 1; i >= 0; i--) 
        {
            int a = romeMap[s[i]];
            if (i == 0) 
            {
                sum += a;
            }
            else {
                int b = romeMap[s[i - 1]];
                int flag = a / b;
                if (flag == 5 || flag == 10) 
                {
                    sum = (sum + a - b);
                    i--;
                }
                else 
                {
                    sum +=  a;
                }
            }
        }
        return sum;
    }
};

结果

12MS 8MB
63% 20%

牙白啊牙白......从后向前取字符,每次取两个,满足特殊条件的就特殊处理......就嗯算。

别人的解法真的是好强好巧好聪明。

零碎

map的用法

1.定义:map<索引数据类型,值数据类型>名称;

​ 如:map<char,int>romeMap;

2.赋值:

​ 如:romeMap['I']=1;

3.插入:

​ 如:romeMap.insert(pair<char,int>('I',1));

4.取对应索引的值:

​ 如:int a = romeMap['I'];

双目运算符

能显著的加快运行速度,一定要用。

​ 如:a = a + 5

​ a += 5

posted @   DDBBD  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示