首页 > 其他分享 >力扣刷题--13. 罗马数字转整数【简单】

力扣刷题--13. 罗马数字转整数【简单】

时间:2024-09-04 18:26:42浏览次数:10  
标签:13 示例 -- 50 value 力扣 int 罗马数字 1000

题目描述

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。

示例 1:

输入: s = “III”
输出: 3
示例 2:

输入: s = “IV”
输出: 4
示例 3:

输入: s = “IX”
输出: 9
示例 4:

输入: s = “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:

输入: s = “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

算法分析

使用哈希表,一个罗马字符代表一个整数

完整代码

class Solution {
private:
    unordered_map<char, int>m = {
        {'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 = m[s[i]];
            if (i < n - 1 && value < m[s[i + 1]]) {
                ans -= value;
            } else {
                ans += value;
            }
        }
        return ans;
    }
};

在这里插入图片描述

标签:13,示例,--,50,value,力扣,int,罗马数字,1000
From: https://blog.csdn.net/m0_75266675/article/details/141813952

相关文章

  • fatal: unable to access 'https://aomedia.googlesource.com/aom.git/': Failed to c
     低版本的Mac安装PHP就是受罪brewinstallshivammathur/php/[email protected]:YouareusingmacOS11.We(andApple)donotprovidesupportforthisoldversion.Itisexpectedbehaviourthatsomeformulaewillfailtobuildinthisoldversion.Itisexpec......
  • 力扣刷题--1837.K进制表示下的各位数字总和【简单】
    题目描述......
  • Error: xz: undefined method `deny_network_access!' for Formulary::FormulaNamespa
      ==>Fetchingxz==>Downloadinghttps://raw.githubusercontent.com/Homebrew/homebrew-core/c7f385112a4c2b9eed76b346d11d333fa8954a89/Formula/x/xz.rbAlreadydownloaded:/Users/wboll/Library/Caches/Homebrew/downloads/049af374432798d3b924a0d36bdcd6......
  • Haproxy详解以及基于Haproxy的高可用实战
    1.Haproxy与KeepalivedVRRP介绍软件:haproxy主要是做负载均衡的7层,也可以做4层负载均衡apache也可以做7层负载均衡,但是很麻烦。实际工作中没有人用。nginx可以做7层的负载,性能强大,多在实际工作中使用。负载均衡是通过OSI协议对应的【1】7层负载均衡:用的7层http协议,4层负......
  • 华为OD机试真题-增强的strstr-2024年OD统一考试(E卷)
     题目描述C语言有一个库函数Q:char*strstr(constchar*haystack,constchar*needle),实现在字符串haystack中查找第一次出现字符串needle的位置,如果未找到则返回null。现要求实现一个strstr的增强函数,可以使用带可选段的字符串来模糊査询,与strstr一样返回首次查找......
  • ava框架Spring 中的动态数据库的使用方法
    在Java框架Spring中,动态数据库的使用通常涉及根据不同条件(如请求的上下文、租户ID等)动态切换数据源。Spring提供了一些方法来实现这一点,以下是一个常见的实现方案:1.基于AbstractRoutingDataSource实现动态数据库切换Spring提供了AbstractRoutingDataSource类,可以通......
  • 多目标应用:四种多目标优化算法(NSOOA、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题(F
    一、柔性作业车间调度问题柔性作业车间调度问题(FlexibleJobSchedulingProblem,FJSP)的描述如下:n个工件{J,J......
  • Win10下ftp搭建配置图文教程
    参考博客:https://www.jb51.net/article/259779.htm1、打开ftp服务方法:win+R输入control打开控制面板点击程序与功能→启动或关闭Windows功能,选择一下选项,打开ftp服务 2、打开Internet信息服务(IIS)管理器方法:win+R输入inetmgr打开iss管理器1)、网站—>添加FTP站点…—>站点......
  • ubuntu任何版本 卡死 解决办法
    首先,我们一定要记得ubuntu一定不要强制关机,一定,一定因为90%的可能你的电脑从此就会黑屏开不了机了,然后你就可以按照我的方法去卸载,重装ubuntu系统了。/(ㄒoㄒ)/~~(如果能解决您的问题,给个三连,小弟我就不胜感激了)方法一.ubuntu突然卡机且无法操作时(不需要关机)在进行下列步骤......
  • 正式收官!阿里云函数计算携手优酷,用 AI 重塑影视 IP 创新边界
    影视行业的新一轮创作风潮,将由AI掀起GPT和Sora等先进AI模型的出现,带动影视行业进入一场前所未有的创意变革。当前,在角色创作、脚本生成、营销策略等方面,AI已经展现了强大的潜力。而作为影视创作的“灵魂”,影视IP包含了丰富的故事场景和角色设定,具有无限的延展可能,影视IP......