LintCode笔记(2)——罗马数字转整数
来源:互联网 发布:黄思路韩寒 知乎 编辑:程序博客网 时间:2024/05/24 22:43
问题:给定一个罗马数字,将其转换成整数。返回的结果要求在1到3999的范围内。
样例
IV
-> 4
XII
-> 12
XXI
-> 21
XCIX
-> 99
首先需要说明罗马数字的原理,如下所示:
罗马数字是阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法:
- 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
- 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
- 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
- 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如=5000
引自罗马数字_百度百科
根据上面的提示,可以看出,不管是相同的数字还是小的数字在大的数字的右边,都是直接相加,而只有一种是例外,即小的数字在大的数字的左边的情况,因此编程时只需要考虑这一种情况即可。
编程实现代码如下所示:
class Solution {public:/*** @param s Roman representation* @return an integer*///将单个罗马字符转换为数字int singleCharToInt(char c){int number = -1;if (c == 'I')number = 1;else if (c == 'X')number = 10;else if (c == 'C')number = 100;else if (c == 'M')number = 1000;else if (c == 'V')number = 5;else if (c == 'L')number = 50;else if (c == 'D')number = 500;return number;}int romanToInt(string& s) {// Write your code herechar roman[20];strcpy(roman, s.c_str());int totalNumber = 0;for (int i = 0; i < s.size(); i++){int number;number = singleCharToInt(roman[i]);//判断是否左边的字符比右边的字符小,如果是,则将该字符代表的数字取反,以达到相减的目的。if (singleCharToInt(roman[i + 1]) > number){number = -1 * number;}totalNumber += number;}return totalNumber;}};
这里没有考虑到数字上面带横线的情况。这里我自己多实现了一个函数,以达到罗马字符转数字的功能,暂时还不知道有什么其他更简洁的方法。
0 0
- LintCode笔记(2)——罗马数字转整数
- LintCode笔记(5)——整数转罗马数字
- lintcode刷题——整数转罗马数字
- lintcode刷题——罗马数字转整数
- LintCode:整数转罗马数字
- Lintcode 罗马数字转整数
- [Lintcode]罗马数字转整数
- lintcode -- 罗马数字转整数
- lintcode -- 整数转罗马数字
- 整数转罗马数字-LintCode
- 罗马数字转整数-LintCode
- lintcode-罗马数字转整数-419
- *[lintcode] Integer to Roman 整数转罗马数字
- [LintCode 419] 罗马数字转整数(Python)
- LeetCode 罗马数字转整数
- 罗马数字转整数
- 整数转罗马数字
- LintCode_419_罗马数字转整数
- 惊!全球玩家每周在游戏上竟然用掉30亿个小时
- NYOJ 8 一种排序(结构体排序)
- jquery + 正则表达式 获取当前URL中的参数值
- MyBatis Sql语句中的转义字符
- mysql中innodb和myisam详解
- LintCode笔记(2)——罗马数字转整数
- Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans-3.1.xsd'
- 坦克大战 nyoj248
- c++ 工具函数
- python AES加密模块使用
- css实现鼠标放到图片旋转效果
- 一直以来伴随我的一些学习习惯(三):阅读方法
- 移动端Web开发
- jedis高版本的JedisPoolConfig没有maxActive和maxWait