Roman to Integertegerer
来源:互联网 发布:网络空间安全研究生 编辑:程序博客网 时间:2024/05/03 03:17
问题描述:Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
首先我们需要对罗马数字有一个基本的了解,大家都知道罗马数字1到9分别
I,1
II,2
III,3
IV,4
V,5
VI,6
VII,7
VIII,8
IX,9
但是后面的罗马数字就不一定是每个人都知道的了,为了方便大家理解这个问题,我先介绍一下罗马数字的组成。
基本字符:
I、V、X、L、C、D、M
相应的阿拉伯数字表示为:
1.5、10、50、100、500、1000
(1)相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
(2)小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
(3)小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
(4)正常使用时连写的数字重复不得超过三次。
(5)在一个数的上面画一条横线,表示这个数增值1000 倍。
好了,那么DCXXI是多少?
500+100+10+10+1=621
对于这个问题而言,我的思路是:
- 后面的数字比前面小则直接加到前面的数字上去。
- 后面的数字比前面大则加到前面数字上后再减去两倍的前面数字。
代码部分:
#include<iostream>#include<string>using namespace std;int graph[100];int main(){graph['I'] = 1;graph['V'] = 5;graph['X'] = 10;graph['L'] = 50;graph['C'] = 100;graph['D'] = 500;graph['M'] = 1000;string num;cin>>num;int res = graph[num[0]];for(int i=0; num[i] != 0; i++){if(graph[num[i]] >= graph[num[i+1]]){res+=graph[num[i+1]];}else{res = res + graph[num[i+1]] - 2*graph[num[i]];}}cout<<res;}因为只有对字符串遍历一次,所以该算法的复杂度是
0 0
- Roman to Integertegerer
- Integer to Roman & Roman to Integer
- Integer to Roman & Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- Integer to Roman and Roman to Integer
- LeetCode Integer to Roman & Roman to Integer
- Roman to Integer/Integer to Roman
- leetcode - roman to integer & integer to roman
- "Roman to Integer" and "Integer to Roman"
- Roman to Integer &&Integer to Roman
- Int to Roman And Roman to Int
- Roman to Integer and Integer to Roman
- Roman to Integer/Integer to Roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- 安装第三方软件XtraBackup对数据做增量备份
- sed 提取匹配的字符串内容
- MAC os, Google drive 登录故障排除 (There was a problem signing in)
- Python 画3维图
- Spark (大规模数据处理而设计的快速通用的计算引擎, 与MapReduce类似 ) 基础概念
- Roman to Integertegerer
- (HDU)5832
- 请不要随便走上编程这条路
- Vue.js之事件的绑定(v-on: 或者 @ )
- VS2010制作安装程序+卸载程序并提升运行权限
- 17.03.05 正则表达式
- 查看SELinux状态并关闭SELinux
- uml几种类图
- ogg日常运维命令