标签:style blog http color io for
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题解:转换的方法:从左往右扫描罗马字符,如果当前的字符对应的数字比上一个数字小,就直接加上这个数字;否则加上这个数字并且减去上一个数字的两倍,然后更新上一个数字。利用一个HashMap存放罗马字符和数字的对应。
罗马数字和阿拉伯数字的对应表格参见http://www.cnblogs.com/sunshineatnoon/p/3856057.html
例如罗马数字DCXIX:500+100+10+1+10-2 = 619
代码如下:
1 public class Solution { 2 public int romanToInt(String s) { 3 if(s == null || s.length() == 0) 4 return 0; 5 6 HashMap<Character, Integer> map= new HashMap<Character,Integer>(); 7 map.put(‘I‘, 1); 8 map.put(‘V‘, 5); 9 map.put(‘X‘, 10); 10 map.put(‘L‘, 50); 11 map.put(‘C‘, 100); 12 map.put(‘D‘, 500); 13 map.put(‘M‘, 1000); 14 15 int length = s.length(); 16 int result = map.get(s.charAt(0)); 17 int last = result; 18 19 for(int i = 1;i < length;i++){ 20 int temp = map.get(s.charAt(i)); 21 if(temp <= last) 22 result += temp; 23 else 24 result = result + temp - 2*last; 25 last = temp; 26 } 27 28 return result; 29 } 30 }
【leetcode刷题笔记】Roman to Integer,布布扣,bubuko.com
【leetcode刷题笔记】Roman to Integer
标签:style blog http color io for
原文地址:http://www.cnblogs.com/sunshineatnoon/p/3856080.html