Roman to Integer leetcode
来源:互联网 发布:叙利亚老虎师 知乎 编辑:程序博客网 时间:2024/05/19 04:53
Given a roman numeral, convert it to an integer.
input is guaranteed to be within the range from 1 to 3999.
题目的意思是将给定的罗马数字转换为一个整数
什么是罗马数字:
I, II, III, IV, V, VI, VII, VIII, IX, X.
上面的罗马数字表示为 1 2 3 4 5 6 7 8 9 10
在罗马数字中,各个字符对应的数字大小如上,级别最高的字符为M 其次为D 最小的为I
规则:
从右往左,遇到比上一个字符级别低的或者相同的就 加上该字符对应的数字值 表示 和累加 如VII 为 1+ 1+ 5 =7
遇到一个比上一个字符级别高就减去该字符对应的数字值,如 IV 为 5 -1=4
代码如下:
<span style="font-size:18px;">class Solution {public: /* SymbolValue I1 V5 X10 L50 C100 D500 M1,000 */ //需要注意 罗马数字中存在减法,从后往前遍历 int romanToInt(string s) { int result=0; //要记录上一次出现的是哪个单位,用数字记录上一次出现的是哪个单位,分别为 1 2 3 4 5 6 7 表示 I V X L C D M int last_show=0;//初始值为0 当上一次出现的值小于等于当前值时用加法,否则有减法 int cur_show; //当前值 for(int i=s.length()-1;i>=0;i--) { switch(s[i]) { case 'I': cur_show=1; if(cur_show>=last_show) result+=1; else result-=1; break; case 'V': cur_show=2; if(cur_show>=last_show) result+=5; else result-=5; break; case 'X': cur_show=3; if(cur_show>=last_show) result+=10; else result-=10; break; case 'L': cur_show=4; if(cur_show>=last_show) result+=50; else result-=50; break; case 'C': cur_show=5; if(cur_show>=last_show) result+=100; else result-=100; break; case 'D': cur_show=6; if(cur_show>=last_show) result+=500; else result-=500; break; case 'M': cur_show=7; if(cur_show>=last_show) result+=1000; else result-=1000; break; default: break; } last_show=cur_show; } return result; }};</span>
0 0
- 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
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- LeetCode: Integer to Roman
- LeetCode : Roman to Integer
- [Leetcode] Roman to Integer
- [Leetcode] Integer to Roman
- Leetcode: Integer to Roman
- Leetcode: Roman to Integer
- LeetCode Integer to Roman
- 【leetcode】Roman to Integer
- 两点距离
- 集训 第二篇
- LeetCode--Maximum Product Subarray
- 打印蛇形矩阵-题解
- hadoop的dfs.replication和dfs setrep
- Roman to Integer leetcode
- 数据库问题
- android开发之应用程序如何完全退出
- 20150115 瑞士央行取消汇率下限,瑞郎全线疯狂暴涨20% 黄金1260
- php设计模式——装饰器模式
- Embed Segue(嵌入式Segue)Demo
- Linux socket 及多线程 实例
- 当一个.NET托管程序运行时都发生了什么,关闭时发生了什么
- Matplotlib 基础