zoukankan      html  css  js  c++  java
  • 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         // Start typing your Java solution below
     4         // DO NOT write main() function
     5         StringBuffer ss = new StringBuffer(s);
     6         int i,j;
     7         int result = 0;
     8         if(ss.length() == 0) return result;
     9         else if(ss.length() == 1) return romanChar(ss.charAt(0)); 
    10         for(i = 0; i < ss.length(); i++){
    11             j = i + 1;
    12             if(j == ss.length()){
    13                 result += romanChar(ss.charAt(i));
    14                 break;
    15             }
    16             if(leftLarger(ss.charAt(i),ss.charAt(j))){
    17                 result += romanChar(ss.charAt(i));
    18             }
    19             else{
    20                 result += romanChar(ss.charAt(j)) - romanChar(ss.charAt(i));
    21                 i ++;
    22                 
    23             }
    24         }
    25         return result;
    26     }
    27     
    28     public int romanChar(char c){
    29         if(c == 'I') return 1;
    30         else if(c == 'V') return 5;
    31         else if(c == 'X') return 10;
    32         else if(c == 'L') return 50;
    33         else if(c == 'C') return 100;
    34         else if(c == 'D') return 500;
    35         else if(c == 'M') return 1000;
    36         else return -1;
    37     }
    38     public boolean leftLarger(char a,char b){
    39         if(a == 'M') return true;
    40         if(a == 'D' && b != 'M') return true;
    41         else if(a == 'C' && b != 'M' && b != 'D') return true;
    42         else if(a == 'L' && b != 'M' && b != 'D' && b != 'C') return true;
    43         else if(a == 'X' && b != 'M' && b != 'L' && b != 'D' && b != 'C' ) return true;
    44         else if(a == 'V' && b != 'M' && b != 'X' && b != 'L' && b != 'D' && b != 'C') return true;
    45         else if(a == 'I' && b == 'I') return true;
    46         else return false;
    47     }
    48 }
  • 相关阅读:
    探究操作系统的内存分配(malloc)对齐策略
    三十一个实用的小常识
    防止网页后退
    郁闷的一天
    脑袋不行
    家的开张
    猴子定律
    赴微软onsite!谁有C++/HTML/JavaScript开发工程师推荐?
    卡马克的求平方根函数代码的陷阱
    动作游戏自定义技能探讨
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3312082.html
Copyright © 2011-2022 走看看