• 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.

    Solution:

     1 public class Solution {
     2     public int romanToInt(String s) {
     3         if (s.length()==0) return 0;
     4 
     5         Map<Character,Integer> map = new HashMap<Character,Integer>();
     6         map.put('I',1);
     7         map.put('V',5);
     8         map.put('X',10);
     9         map.put('L',50);
    10         map.put('C',100);
    11         map.put('D',500);
    12         map.put('M',1000);
    13         
    14         int res = 0;
    15         int index = 0;
    16         while (index<s.length()){
    17             char cur = s.charAt(index);
    18             if (index+1<s.length()){
    19                 char next = s.charAt(index+1);
    20                 int val1 = map.get(cur);
    21                 int val2 = map.get(next);
    22                 if (val1<val2){
    23                     res += (val2-val1);
    24                     index += 2;
    25                 } else {
    26                     res += val1;
    27                     index++;
    28                 }
    29             } else {
    30                 int val = map.get(cur);
    31                 res += val;
    32                 index++;
    33             }
    34         }
    35 
    36         return res;       
    37     }
    38 }

     Solution 2:

    Whenever the value of char i is smaller than the value of char i+1, then the value of char i should be reduced from the sum.

     1 public class Solution {
     2     public int romanToInt(String s) {
     3         Map<Character,Integer> map = new HashMap<Character,Integer>();
     4         map.put('I',1);
     5         map.put('V',5);
     6         map.put('X',10);
     7         map.put('L',50);
     8         map.put('C',100);
     9         map.put('D',500);
    10         map.put('M',1000);
    11        
    12         int sum = 0;
    13         for (int i=0;i<s.length()-1;i++){
    14             char c = s.charAt(i);
    15             int val = map.get(c);
    16             if (c=='I' || c=='X' || c=='C'){
    17                 char next = s.charAt(i+1);
    18                 int val2 = map.get(next);
    19                 if (val<val2) val = -val;
    20             }
    21 
    22             sum += val;
    23         }
    24         char c = s.charAt(s.length()-1);
    25         sum += map.get(c);
    26         return sum;
    27     }
    28 }
  • 相关阅读:
    Android布局
    Android单位度量
    mysql操作1
    mysql操作
    Android Bitmap 开源图片框架分析(精华五)
    Android Bitmap 图片框架效果处理对比(精华六)
    Android Bitmap 开源图片框架分析(精华四)
    Android Bitmap 开源图片框架分析(精华三)
    Android Bitmap 加载多张图片的缓存处理(精华二)
    Android Bitmap 加载大尺寸图片(精华一)
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4130395.html
Copyright © 2020-2023  润新知