刷题-整数和罗马数字转换
实现罗马数字与整数的互转。 数字大小为[1, 3999]之间。
罗马数字只有7个字母组成,每个字母代码的字如下
字母 M D C L X V I
代表数字 1000 500 100 50 10 5 1
四个规则
相同的数字连写, 所表示的数等于这些数字相加得到的数。如 XXX表示 30
小的数字在大的数字的右边, 所表示的数等于这些数字相加得到的数 如VIII 表示8
小的数字(限于I, X, C)在大的数字的左边, 所表示的数等于大数减去小的数: 如IV 表示4
在一个数的上面画一条横线, 表示这个数增值1000倍(由于题目只考虑4000以内的数,所以这条规则不用考虑)。
class Solution {
public:string intToRoman(int num) {if(num<1||num>3999) return 0;string res="";vector<int> key={1000,900,500,400,100,90,50,40,10,9,5,4,1};vector<string> value={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};for(int i=0;i<key.size();++i){int count=num/key[i];for(int j=0;j<count;++j)res+=value[i];num=num%key[i];}return res; }
};
罗马数字转换为Integer
/*
分析:从前往后扫描,用一个临时变量记录分段数字
如果当前比前一个大,说明这一段的值应该是当前这个值减去上一个值。
比如:IV=5-1;
否则,将当前值加入到结果中,然后开始下一段记录。
比如:VI=5+1,II=1+1
*/
class Solution {
public:inline int map(char c){switch(c){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(string s) {int result=0;for(int i=0;i<s.size();i++){if(i>0&&map(s[i])>map(s[i-1])){result+=(map(s[i])-2*map(s[i-1]));}else{result+=map(s[i]);}}return result;}
};
刷题-整数和罗马数字转换相关推荐
- leetcode算法刷题记录之罗马数字转整数
题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X ...
- LeetCode刷题13-简单-罗马数字转整数
文章目录 前言 一.题目描述 二.题目解析 三.代码 结语 前言 算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题! 第一遍,不求最优解,但求能过!!!
- go语言刷题:8. 字符串转换整数 (atoi)
申明:本文只用做自己学习记录 题目 实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(st ...
- LeetCode刷题: 整数反转
题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转.示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意: ...
- LeetCode第12题 整数转罗马数字
/* 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为 ...
- leedcode刷题——整数反转
给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果. 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0. 示例 1: 输入:x = ...
- LeetCode刷题——整数反转
目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution:def reverse(self, x: int) -> int:if -10 < ...
- C++刷题记录总结--常用知识点
刷题随笔记录~ transform转换容器的元素 string s="2019-07-25 14:45:23";transform(s.begin(),s.end(),s.begi ...
- 菜菜的刷题日记 | 12.整数转罗马数字
系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子 菜鸡的刷题之路--2022/1/24,这几天忙着肝并发编程,题在做但是没空写题解,今晚补一篇. 文章目录 [题目] [官方 ...
最新文章
- 【 全干货 】5 分钟带你看懂 Docker !
- InfluxDB 分布式时间序列数据库环境搭建——据qcon大会2016qiniu说集群很坑且闭源了...
- Maven(2)--生命周期以及插件目标
- 【C++深度剖析教程31】被遗弃的多重继承
- Dockerfile语法简介(精)
- dz论坛修改html编辑器,discuz二次开发更换百度ueditor编辑器
- [Java] 蓝桥杯BASIC-24 基础练习 龟兔赛跑预测
- java feign请求pathvariable_8、服务发现amp;服务消费者Feign
- SQL SERVER 数据库表索引重建
- 【紫书第五章】String、结构体、部分STL的常见用法
- mysql sql model设置_操作mysql model
- QT MD4 MD5 Sha1等几种加密方式
- html5 电子白板 直播,基于HTML5技术的智能终端电子白板软件的设计与实现
- MSP430F149与ESP8266串口通信(中)
- windows系统IP地址、localhost、127.0.0.1 、0.0.0.0和 本机IP区别
- Q4营收突破20亿且连续四个季度盈利斗鱼驶入“后直播时代”快车道
- stm32控制半导体制冷器实现饮水机保温制冷功能
- 新加硬盘但计算机里找不着,电脑开机找不到硬盘怎么办
- JavaScript XHR使用 JSONPlaceholder API 并本地搭建JSON server REST API
- PHP 版 微信小程序商城 源码和搭建
热门文章
- 2.企业发放的奖金根据利润提成。
- Android AMS(android 11)
- 面试专题:QTrade(苹果树)面试复盘
- 【python量化交易学习】pandas获取mysql数据,使用pyecharts画K线图,ma移动均线。
- 数字 IC 技能拓展(16)Zynq 与 Pynq 都是什么呢
- 水雨情监测 水库水雨情在线监测
- 60 个让程序员崩溃的瞬间,哈哈哈哈哈哈哈哈哈
- UVa 1600 巡逻机器人(Patrol Robot)
- could和may区别请求_can和may的区别及用法
- Java语言程序设计与数据结构(进阶篇)梁勇课后题ex——19