lintcode-medium-Roman to Integer

Given a roman numeral, convert it to an integer.

The answer is guaranteed to be within the range from 1 to 3999.

 

Example

IV -> 4

XII -> 12

XXI -> 21

XCIX -> 99

 

public class Solution {
    /**
     * @param s Roman representation
     * @return an integer
     */
    public int romanToInt(String s) {
        // Write your code here
        
        if(s == null || s.length() == 0)
            return 0;
        
        int result = 0;
        
        for(int i = 0; i < s.length() - 1; i++){
            if(getNum(s.charAt(i)) < getNum(s.charAt(i + 1)))
                result -= getNum(s.charAt(i));
            else
                result += getNum(s.charAt(i));
        }
        
        result += getNum(s.charAt(s.length() - 1));
        
        return result;
    }
    
    public int getNum(char c){
        switch(c){
            case 'I':   return 1;
            case 'V':   return 5;
            case 'X':   return 10;
            case 'L':   return 50;
            case 'C':   return 100;
            case 'D':   return 500;
            case 'M':   return 1000;
        }
        
        return 0;
    }
    
}

 

posted @ 2016-04-05 11:12  哥布林工程师  阅读(110)  评论(0编辑  收藏  举报