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

【力扣】13. 罗马数字转整数

题目描述

罗马数字包含以下七种字符: IVXLCDM

字符数值
I1
V5
X10
L50
C100
D500
M1000

例如, 罗马数字 2 写做 II ,即为两个并列的 112 写做 XII ,即为 X + II27 写做 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.

提示:

  • 1 <= s.length <= 15
  • s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')
  • 题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999]
  • 题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
  • ILIM 这样的例子并不符合题目要求,49 应该写作 XLIX999 应该写作 CMXCIX
  • 关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。

解决方案

  • C
int getvalue(char ch)
{switch(ch) {case 'I': return 1;case 'V': return 5;case 'X': return 10;case 'L': return 50;case 'C': return 100;case 'D': return 500;case 'M': return 1000;default: return 0;}
}int romanToInt(char * s) {int sum = 0, num = 0, pre = 0;int size = strlen(s);pre = getvalue(s[0]);for(int i = 1; i < size; i++){num = getvalue(s[i]);if(pre < num){sum -= pre;}else{sum += pre;}pre = num;}sum += pre;return sum;
}
http://www.lryc.cn/news/171806.html

相关文章:

  • 高效时间管理,事无巨细掌握——OmniFocus Pro 3 for Mac最强GTD工具
  • 解锁前端Vue3宝藏级资料 第五章 Vue 组件应用 3( Slots )
  • 接口测试之文件上传
  • 7.Flask-Migrate数据库迁移
  • 信创办公–基于WPS的PPT最佳实践系列 (项目8创建电子相册)
  • JRedis的基本操作,基本数据类型操作
  • QT网页 webengine / CEF
  • Golang笔试题:编写一个函数,接收一个整数参数n,输出n的阶乘结果
  • 外包干了2个月,技术退步明显.......
  • 无涯教程-JavaScript - BINOM.DIST函数
  • linux定时重启tomcat
  • 在静态方法中访问@Value注入的静态变量!!
  • 掌握这些算法,让你的编程之路更顺畅——重要算法解析
  • flink集群与资源@k8s源码分析-总述
  • LeetCode 0213. 打家劫舍 II:动动态规划
  • VMware17 不可恢复错误mks解决方案
  • 【深度学习】 Python 和 NumPy 系列教程(廿五):Matplotlib详解:3、多子图和布局:subplot()函数
  • 计算机网络知识补充(1)
  • C# Onnx Yolov8 Pose 姿态识别
  • 7.algorithm2e中while怎么使用
  • Flask狼书笔记 | 08_个人博客(下)
  • 机器学习第十课--提升树
  • react scss.modules中使用iconfont
  • 使用Jmeter+ant进行接口自动化测试(数据驱动)
  • 可视化图表组件之股票数据分析应用
  • STM32 ~ GPIO不同模式之间的区别与实现原理
  • dvwa靶场通关(十二)
  • 【shell学习】企业运维工作中常用的shell脚本
  • 对权限的理解和使用
  • MySQL 5.7 通过数据库idb文件快速导入至另一台数据库