【Leetcode Algorithm】Roman to Integer
来源:互联网 发布:淘宝仅退款不退货规则 编辑:程序博客网 时间:2024/06/05 17:12
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
基本字符
I
V
X
L
C
D
M
相应的阿拉伯数字表示为
1
5
10
50
100
500
1000
相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。(表盘上的四点钟“IIII”例外)
5、在一个数的上面画一条横线,表示这个数扩大1000倍。
1、基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个。
2、不能把基本数字V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个。
3、V 和X 左边的小数字只能用Ⅰ。
4、L 和C 左边的小数字只能用X。
5、D 和M 左边的小数字只能用C。
需要注意的:
1、初始条件,如果len=1,则直接返回第一个数
2、字符串起始位置从i=1开始
3、结束位置,如果i=len,需要把最后一个数加进去
4、如果前一个数比后一个数小,则执行相减操作,i=i+2;反之,直接加前一个数,i=i+1。
代码:
public class Solution { public int romanToInt(String s) { int len = s.length(); int result = 0; int[] tmp = new int[2]; int i = 1; boolean flag = true; if(len>1){ while(i<len){ tmp[1] = getInt(i,s); if(flag){ tmp[0] = getInt(i-1,s); } if(tmp[0]<tmp[1]){ result += (tmp[1] - tmp[0]); flag = true; i += 2; } else{ result += tmp[0]; tmp[0] = tmp[1]; flag = false; i++; } } if(i==len){ result += getInt(i-1,s); } } else{ result = getInt(0,s); } return result; } public static int getInt(int i, String s){ int x = 0; switch(s.charAt(i)){ case 'M': x = 1000; break; case 'D': x = 500; break; case 'C': x = 100; break; case 'L': x = 50; break; case 'X': x = 10; break; case 'V': x = 5; break; case 'I': x = 1; break; } return x; }}
0 0
- 【Leetcode Algorithm】Roman to Integer
- LeetCode Algorithm #13 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
- 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
- java 并发编程 AbstractQueuedSynchronizer 加锁和解锁分析
- iOS 分享功能开发
- sshutil工具介绍:一个跨机器的脚本执行器
- #leetcode#Candy
- IBM---Java 多线程与并发编程专题
- 【Leetcode Algorithm】Roman to Integer
- IM消息的显示方法和装置-专利
- 总结:接口、类、抽象类、继承、构造函数、方法重写、方法重载、自动转型、多态、引用传递
- Android程序:使用SeekBar实现滑动进度条功能
- c# lock
- Linux线程-互斥锁pthread_mutex_t
- Expression is not assignable
- android开发网络资源
- JSON.parse和eval的区别