Roman to Integer
来源:互联网 发布:遗传算法本质 编辑:程序博客网 时间:2024/09/21 06:38
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
搞了挺久一直没搞出来。看了网上的参考后知道是推导的公式写错了。如果是从高位往地位扫(也就是一次循环用s.charAt(i)由高往低),那么相邻元素之间的关系是:1当前元素如果是最高位,先加上对应的元素 2 如果当前元素roman[s.charAt(i)] 比上一个元素roman[s.charAt(i-1)]的数字大,那么由于上一个循环已经加过一次 roman[s.charAt(i-1)],所以需要减去两倍的roman[s.charAt(i-1)],先抵消上一回多加的,然后再正常减去一个。
实现代码:
其实我觉也可以反向循环做这道题,判断roman[s.charAt(i)] 跟roman[s.charAt(i+1)] 的大小关系,有机会补上。
public class Solution { public int romanToInt(String s) {int []roman = new int[256];roman['I']=1;roman['V']=5;roman['X']=10;roman['L']=50;roman['C']=100;roman['D']=500;roman['M']=1000;int result=0;result =roman[s.charAt(0)];for(int i=1;i<s.length();i++){int location =s.charAt(i); int locationP = s.charAt(i-1);if(i==0){result =roman[location];//System.out.println("init: "+roman[location]);continue;}if(roman[locationP]< roman[location]){result += roman[location] -2*roman[locationP];//System.out.println("-: roman[location],roman[location+1]"+roman[location]+" "+roman[location+1]);}else{result+=roman[location] ;//System.out.println("+: "+roman[(char)location]);}}return result; }}
0 0
- 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
- Roman to Integer and Integer to Roman
- Roman to Integer/Integer to Roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- 超级网址汇总
- android 通过UncaughtExceptionHandler 捕获RuntimeException,并将捕获到的信息上传到友盟
- python的按位运算
- android获取string.xml的值
- HDU_1061_RightmostDigit
- Roman to Integer
- 【独立开发者er Cocos2d-x实战 011】Cocos2dx 3.x命令行生成APK详解
- 跟着9张思维导图学习Javascript
- Using Undo/Redo with Item Views
- Activity统一退出
- sublime学习之--批量在多行首位添加代码
- mac下安装opencv
- Java-ArrayList
- 打印当月日历