首页 > 其他 > 详细

LeetCode(Roman to Integer)

时间:2017-03-05 22:03:12      阅读:220      评论: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;
V = 5;
X = 10;
L = 50;
C = 100;
D = 500;
M = 1000;

参考C++:http://www.cnblogs.com/easonliu/p/3654182.html

  • 个位数举例
    Ⅰ,1 】Ⅱ,2】 Ⅲ,3】 Ⅳ,4 】Ⅴ,5 】Ⅵ,6】Ⅶ,7】 Ⅷ,8 】Ⅸ,9 】
  • 十位数举例
    Ⅹ,10】 Ⅺ,11 】Ⅻ,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】

 解释一下罗马计算的规律。当下一个的值大于前一个的值,就减去前一个值。如CD=500-100=400。

如下代码是我自己编写的,但是因为算法太大,导致Time Limit Exceeded。不过还是先记录下这个繁重的算法,这几天再看看能不能精简一下。

 1 public class Solution {
 2     public int romanToInt(String s) {
 3         //String []value={"I","V","X","L","C","D","M"};
 4         char []value={‘I‘,‘V‘,‘X‘,‘L‘,‘C‘,‘D‘,‘M‘};
 5         int []a ={1,5,10,50,100,500,1000};
 6         int num=0;
 7         for(int i=0;i<s.length();i++){
 8             for(int j=0;j<value.length;j++){
 9                 if(s.charAt(i)==value[j]){
10                     if(i+1<s.length()){    
11                         for(int k=0;k<value.length;k++){
12                                 if(s.charAt(i+1)==value[k]){
13                                     if(a[j]<a[k])
14                                     //比较的是整型int值,而不是字符的大小,因而要转换
15                                     //if(s.charAt(i)<s.charAt(i+1)){
16                                         num=num-a[j];//当后一个的值大于前一个值,减去前一个值
17                                     else
18                                     num=num+a[j];
19                                 }
20                         }
21                     }else
22                         num=num+a[j];
23                 }
24                 
25             }
26             
27         }
28         System.out.println(num);
29         return num;
30     }
31 }

 

LeetCode(Roman to Integer)

原文:http://www.cnblogs.com/anylemons/p/6476724.html

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