zoukankan      html  css  js  c++  java
  • 13. Roman to Integer【leetcode】

    Roman to Integer

    Given a roman numeral, convert it to an integer.

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

     1 public class Solution {
     2      public int romanToInt(String s) {
     3         if (s == null || s.length()==0) {
     4                 return 0;
     5         }
     6         Map<Character, Integer> m = new HashMap<Character, Integer>();
     7         m.put('I', 1);
     8         m.put('V', 5);
     9         m.put('X', 10);
    10         m.put('L', 50);
    11         m.put('C', 100);
    12         m.put('D', 500);
    13         m.put('M', 1000);
    14 
    15         int length = s.length();
    16         int result = m.get(s.charAt(length - 1));
    17         for (int i = length - 2; i >= 0; i--) {
    18             if (m.get(s.charAt(i + 1)) <= m.get(s.charAt(i))) {
    19                 result += m.get(s.charAt(i));
    20             } else {
    21                 result -= m.get(s.charAt(i));
    22             }
    23         }
    24         return result;
    25     }
    26 }
    27 
    28 // 方法二
    29 public class Solution {
    30     /**
    31      * @param s Roman representation
    32      * @return an integer
    33      */
    34     public int romanToInt(String s) {
    35         // Write your code here
    36         int ans;
    37         char[] sc = s.toCharArray();
    38         ans = toInt(sc[0]);                        //0 special
    39         for (int i = 1; i < s.length(); i++) {
    40             ans += toInt(sc[i]);
    41             if (toInt(sc[i - 1]) < toInt(sc[i])) {
    42                 ans -= toInt(sc[i - 1]) * 2;
    43             }
    44         }
    45         return ans;
    46     }
    47 
    48     int toInt(char s) {
    49         switch(s) {
    50             case 'I':return 1;
    51             case 'V':return 5;
    52             case 'X':return 10;
    53             case 'L':return 50;
    54             case 'C':return 100;
    55             case 'D':return 500;
    56             case 'M':return 1000;
    57         }
    58         return 0;
    59     }
    60 }
    不积跬步无以至千里,千里之堤毁于蚁穴。 你是点滴积累成就你,你的丝丝懒惰毁掉你。 与诸君共勉
  • 相关阅读:
    英文哲理短句
    经历的一次诈骗
    英文哲理短句
    反思对待新人的方式
    Java 开源报表制作
    现在开始写字
    关于Visual C++ 6.0的调试技巧和经验总结
    一步一步教你实现CTreeCtrl 自绘
    VC中动态加载ODBC解决方法
    VC++程序编译链接的原理与过程
  • 原文地址:https://www.cnblogs.com/haoHaoStudyShare/p/7308619.html
Copyright © 2011-2022 走看看