首页 > 其他分享 >13. 罗马数字转整数

13. 罗马数字转整数

时间:2024-12-18 09:58:22浏览次数:6  
标签:13 ++ 整数 else int 罗马数字 len ans table

  1. 题目链接

  2. 解题思路:没啥可说的,按照要求一个个字符处理

  3. 代码

    class Solution {
    public:
        int romanToInt(string s) {
            int ans = 0;
            int len = s.length();
            map<char, int> table;
            table['I'] = 1;
            table['V'] = 5;
            table['X'] = 10;
            table['L'] = 50;
            table['C'] = 100;
            table['D'] = 500;
            table['M'] = 1000;
            for (int i = 0; i < len; ++i) {
                if (s[i] == 'I') {
                    if (i + 1 < len) {
                        if (s[i + 1] == 'V') {
                            ans += 4;
                            i++;
                        } else if(s[i + 1] == 'X') {
                            ans += 9;
                            i++;
                        } else {
                            ans += 1;
                        }
                    } else {
                        ans += 1;
                    }
                } else if(s[i] == 'X') {
                    if (i + 1 < len) {
                        if (s[i + 1] == 'L') {
                            ans += 40;
                            i++;
                        } else if (s[i + 1] == 'C') {
                            ans += 90;
                            i++;
                        } else {
                            ans += 10;
                        }
                    } else {
                        ans += 10;
                    }
                } else if (s[i] == 'C') {
                    if (i + 1 < len) {
                        if (s[i + 1] == 'D') {
                            ans += 400;
                            i++;
                        } else if (s[i + 1] == 'M') {
                            ans += 900;
                            i++;
                        } else {
                            ans += 100;
                        }
                    } else {
                        ans += 100;
                    }
                } else {
                    ans += table[s[i]];
                }
            }
            return ans;
        }
    };
    

标签:13,++,整数,else,int,罗马数字,len,ans,table
From: https://www.cnblogs.com/ouyangxx/p/18614023

相关文章

  • 【CSS in Depth 2 精译_083】13.3:CSS 混合模式的用法及相关注意事项
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第四部分视觉增强技术✔️【第13章渐变、阴影与混合模式】✔️13.1渐变13.1.1使用多个颜色节点(上)13.1.2颜色插值方法(中)13.1.3径向渐变(下)13.1.4锥形渐变(下)13.2阴影13.2.1利用渐变和阴影打造......
  • 操作系统(13)虚拟存储器
    前言    操作系统中的虚拟存储器是一项关键技术,它为用户提供了一个远大于实际物理内存容量的逻辑内存空间。一、定义与原理    虚拟存储器是具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的存储器系统。其逻辑容量由内存容量与外存容量之和决定......
  • 12.13
    1.如今所使用的微处理器设备的种类多样,从只有几千个逻辑门且时钟频率低于 1MHz 的价值 1 美元的嵌入式设备,到有数十亿逻辑门且时钟频率达到千兆赫兹级别的桌面级设备。一台包含数千个独立执行单元的大型计算机的尺寸可以与一个大房间相当,它消耗的电力足够点亮一座小城市中所有......
  • 13line-height-CSS常见选择器-CSS伪类
    一、line-height常用(非常重要的)line-height用于设置文本的行高行高可以先简单的理解为一行文字所占据的高度主要作用是文本的行高为什么文本需要行高呢?渲染出来给用户看起来比较舒服,为了方便文本的阅读有了行高之后可以明显的发现便于阅读了。行高的严格定义是:两行文字基......
  • Android 13 相较于 Android 12 的新特性
    标签:Android13;Android13新特性;Android13相较于Android12的新特性及开发者注意事项一、Android13相较于Android12的新特性Android13(代号Tiramisu)在用户体验、安全性、隐私保护以及开发者工具等多个方面进行了改进和增强。以下是一些主要的新特......
  • 20241213-局部变量和全局变量的思考
    for循环或while循环、方法或方法参数列表里定义的局部变量,在其内的代码块执行完毕后就被销毁了,不能再用了。1.A方法的局部变量a作为B方法的传入参数,在B方法内对该传入参数的运算不会对A方法的局部变量a产生影响。见下代码:publicclassArrayReference{ publicstaticvoid......
  • 最小(大)栈、求最大公约数、判断一个数是否为2的整数次幂
    2.最小(大)栈问题题目实现一个栈,该栈带有出栈(pop),入栈(push),取最小元素(getMin)3个方法。且要保证这3个方法的时间复杂度都是O(1)。思路1.设原有的栈为main栈,此时创建一个额外的min栈,用于辅助main栈。2.当第1个元素,进main栈时,让该元素,也进入min栈,这个唯一的元素也是main栈的......
  • 前端面经每日一题Day13
    script放到head中会怎么样?script标签可以放到head标签里面,也可以放到body标签里面,但是由于浏览器解析HTML文件会从上到下,所以为了防止阻塞页面渲染,我们一般放到body标签的最下面。阻塞页面渲染。因为浏览器解析HTML,遇到script标签会停止解析HTML,先下载执行脚本。如果脚本过大......
  • Spark向量化计算在美团生产环境的实践13
     1什么是向量化计算1.1并行数据处理:SIMD指令让我们从一个简单问题开始:假设要实现“数组a+b存入c”,设三个整型数组的长度都是100,那么只需将“c[i]=a[i]+b[i]”置于一个100次的循环内,代码如下:voidaddArrays(constint*a,constint*b,int*c,intnum){for(in......
  • Spark向量化计算在美团生产环境的实践13
     1什么是向量化计算1.1并行数据处理:SIMD指令让我们从一个简单问题开始:假设要实现“数组a+b存入c”,设三个整型数组的长度都是100,那么只需将“c[i]=a[i]+b[i]”置于一个100次的循环内,代码如下:voidaddArrays(constint*a,constint*b,int*c,intnum){for(in......