当前位置: 首页 > ai >正文

LeetCode13_罗马数字转整数

LeetCode13_罗马数字转整数

  • 标签:#哈希表 #数字 #字符串
    • Ⅰ. 题目
    • Ⅱ. 示例
  • 0. 个人方法:模拟

标签:#哈希表 #数字 #字符串

Ⅰ. 题目

  • 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符数值
I1
V5
X10
L50
C100
D500
M1000
  • 例如, 罗马数字 2 写做 II ,即为两个并列的 Ⅰ 。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.

0. 个人方法:模拟

观察题目可以发现,Ⅰ( 10 )、X ( 100 )、C ( 1000 ) 这三个罗马数字出现在特定数字左边的时候,代表减去这么多的数值,出现在右侧就是正常的加。如:

  • I (1) 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。相当于 -1
  • X (10) 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 相当于 -10
  • C (100) 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。相当于 -100
class Solution {
public:int romanToInt(string s) {unordered_map<char, int> roma_map = {{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50},{'C', 100}, {'D', 500}, {'M', 1000}};int result = 0;int n = s.length();for (int i=0; i<n; ++i){int current_value = roma_map[s[i]];if (i + 1 < n && current_value < roma_map[s[i+1]]){result -= current_value;}else{result += current_value;}}return result;}
};
http://www.xdnf.cn/news/2309.html

相关文章:

  • OpenVLA:大语言模型用于机器人操控的经典开源作品
  • 界面打印和重定向同时实现
  • 多级缓存架构设计与实践经验
  • 决策树随机深林
  • Mysql从入门到精通day6————时间和日期函数精讲
  • PDF嵌入隐藏的文字
  • [ACTF2020 新生赛]Upload
  • DeepSeek智能时空数据分析(五):基于区域人口数量绘制地图散点-大模型搜集数据NL2SQL加工数据
  • Python对比两张CAD图并标记差异的解决方案
  • 第5章 数据库系统(选择|案例|论文)(重点★★★★★)
  • 【ROS2】ROS开发环境配置——vscode和git
  • 【极致版】华为云Astro轻应用抽取IoTDA影子设备参数生成表格页面全流程
  • OceanBase数据库磁盘空间管理
  • AI声像融合守护幼儿安全——打骂/异常声音报警系统的智慧防护
  • 在Linux中使用ferror()函数和feof()函数判断文件是否读取成功,或者读取指针是否到达了文件末尾?
  • python实战项目66:抓取考研招生专业信息
  • 2025上海车展 | 移远通信重磅发布AR脚踢毫米波雷达,重新定义“无接触交互”尾门
  • IO与文件·I(linux+C)
  • 洛谷题目:P8856 [POI 2002] 火车线路 题解(有一点难)
  • Docker(二):docker常用命令
  • 概率论与统计(不确定性分析)主要应用在什么方面?涉及到具体知识是什么?
  • 如何识别DDoS攻击类型及有效防护?一篇简明指南
  • Git Bash 下使用 SSH 连接出现 “Software caused connection abort” 问题
  • Macos m系列芯片环境下python3安装mysqlclient系列问题
  • 数据需求管理办法有哪些?具体应如何应用?
  • 图神经网络(GNN)基本概念与核心原理
  • 某化工厂运维升级:智和信通运维平台实现工业交换机智能管理
  • Maven 4.0.0 模式-pom.xml配置详解
  • 《AI大模型应知应会100篇》第37篇:Agent框架入门:让AI具备自主行动能力
  • 数字巴别塔:全栈多模态开发框架如何用自然语言重构软件生产关系?