首页 > 编程语言 > 详细

Java-Roman to Integer

时间:2015-01-15 16:05:17      阅读:361      评论:0      收藏:0      [点我收藏+]

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

将罗马数字转为阿拉伯数字 对应转换表如下:

个位数举例
I, 1 】II, 2】 III, 3】 IV, 4 】V, 5 】VI, 6】 VII, 7】 VIII,8 】IX, 9 

·十位数举例
  X, 10】 XI, 11 】XII, 12】 XIII, 13】 XIV, 14】 XV, 15 】XVI, 16 】XVII, 17 】XVIII, 18】 XIX, 19】 XX, 20】  XXI, 21 】XXII, 22 】XXIX, 29】 XXX, 30】 XXXIV, 34】 XXXV, 35 】XXXIX, 39】 XL, 40】 L, 50 】LI, 51】 LV, 55】 LX, 60】 LXV, 65】 LXXX, 80】 XC, 90 】XCIII, 93】 XCV, 95 】XCVIII, 98】 XCIX, 99 】

·百位数举例
C, 100】 CC, 200 】CCC, 300 】CD, 400】 D, 500 】DC,600 】DCC, 700】 DCCC, 800 】CM, 900】 CMXCIX,999】 

·千位数举例 
M, 1000】 MC, 1100 】MCD, 1400 】MD, 1500 】MDC, 1600 】MDCLXVI, 1666】 MDCCCLXXXVIII, 1888 】MDCCCXCIX, 1899 】MCM, 1900 】MCMLXXVI, 1976】 MCMLXXXIV, 1984】 MCMXC, 1990 】MM, 2000 】MMMCMXCIX, 3999】

可以看出 基本的数字有 I V X L C D M 分别对应 1 5 10 50 100 500 1000 当前面的字母小于后面字母时 如 IV 表示 V-I当前面数字大于后面数字时 如VI 表示V+I 根据此可以遍历S求出值 代码如下:

public class Solution {
    public int romanToInt(String s) {
       int res=0;
		int prev=getRomanValue(s.charAt(0));
		res+=prev;
		for(int i=1;i<s.length();i++){
			int curv=getRomanValue(s.charAt(i));
			if(curv<=prev){
				res+=curv;;
			}else{
				res+=curv-2*prev;				
			}
			prev=curv;
		}
		return res;
    }
    public  int getRomanValue(char c) {  
        switch(c) {  
            case 'I': return 1;   
            case 'V': return 5;  
            case 'X': return 10;  
            case 'L': return 50;  
            case 'C': return 100;  
            case 'D': return 500;  
            case 'M': return 1000;  
            default: return 0;  
        }  
    }  
}


 

 

Java-Roman to Integer

原文:http://blog.csdn.net/u012734829/article/details/42741463

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!