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 }
  • 相关阅读:
    POJ 2891 Strange Way to Express Integers 中国剩余定理 模板 数论
    HDU 6185 Covering 矩阵快速幂 递推
    hdoj2796
    hdoj2795【未完待续】
    hdoj【1006】【未完待续】
    hdoj1007【几何】【未完待续】
    位运算【C++学习(计蒜客)】
    poj1664【DFS】
    退出ACM?
    C4-总结
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3312082.html
Copyright © 2011-2022 走看看