码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode刷题笔记】Roman to Integer

时间:2014-07-21 10:05:42      阅读:223      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!