每日算法之十二:Roman to Integer
来源:互联网 发布:2015年度十大网络用语 编辑:程序博客网 时间:2024/05/18 07:49
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {public:int toNUm(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(string s) { int num = 0; for(int i = 0;i<s.size();i++) { if(toNUm(s[i])>=toNUm(s[i+1])) num += toNUm(s[i]); else num -= toNUm(s[i]); } return num; }};
罗马数字
你肯定见过罗马数字,即使你不认识他们。你可能在版权信息、老电影、电视、大学或者图书馆的题词墙看到(用CopyrightMCMXLVI表示版权信息,而不是用?“Copyrigh1946。你也可能在大纲或者目录参考中看到他们。这种系统的数字表达方式可以追溯到罗马帝国(因此而得名)。在罗马数字中,有七个不同的数字可以以不同的方式结合起来表示其他数字。
I=1
V=5
X=10
L=50
C=100
D=500
M=1000
下面是几个通常的规则来构成罗马数字:
大部分时候用字符相叠加来表示数字。I 是1,II 是2,III 是3。VI 是6(挨个看来,是"5和1"的组合)VII 是7,VIII 是8
含有10 的字符(I,X,C 和M)最多可以重复出现三个。为了表示4,必须用同一位数的下一个更大的数字5 来减去一。不能用IIII 来表示4,而应该是IV(意思是比5 小1)。40 写做XL(比50 小10),41 写做 XLI,42 写做XLII,43 写做 XLIII,44 写做XLIV(比50 小10 并且比5 小 1)。
有些时候表示方法恰恰相反。为了表示一个中间的数字,需要从一个最终的值来减。比如:9 需要从10 来减:8 是VIII,但9 确是IX(比10 小1),并不是VIII(I 字符不能重复4 次)。90 是XC,900 是CM。
表示5 的字符不能在一个数字中重复出现。10 只能用X 表示,不能用VV 表示。100 只能用C 表示,而不是LL。
罗马数字是从左到右来计算,因此字符的顺序非常重要。DC表示600,而CD 完全是另一个数字400(比500 小100)。CI是101,IC 不是一个罗马数字(因为你不能从100 减1,你只能写成XCIX,表示比100 小10,且比10 小1)。
- 每日算法之十二:Roman to Integer
- 每日算法之十一:Integer to Roman
- Algorithm之路十二:Integer to Roman
- LeetCode OJ算法题(十二):Integer to Roman
- 每日一练之Roman to integer & integer to Roman【LeetCode No.12,13】
- LeetCode算法题之Roman to Integer
- leetcode之Roman to Integer
- LeetCode之Roman to Integer
- leetcode 之 Roman to Integer
- leetCode 之 Roman to Integer
- 【Leetcode】之Integer to Roman
- 【Leetcode】之Roman to Integer
- leetcode之Roman to Integer
- LeetCode 之 Roman to Integer
- LeedCode 之 Integer to Roman
- Leetcode 之 Roman to Integer
- leetcode之Roman to Integer && Integer to Roman
- LeetCode之Integer to Roman, Roman to Integer
- javaEE jspsmart 实现文件上传和下载
- Insertion Sort Advanced Analysis(逆序对)
- oracle 表空间与数据文件详细(一)
- (M)常用EXCEL工作薄函数和VBA函数
- Objective-c文件类型
- 每日算法之十二:Roman to Integer
- A Simple Introduction To Computer Networking
- 自动给tmux现场做简单的备胎
- java的版本
- MongoDB 索引
- XTU1168:Alice and Bob(二维DP)
- 是时候说再见了
- oracle添加主键
- 在发布站点前,Web开发者需要关注哪些技术细节?