Labels

algorithms (22) Design Patterns (20) java (19) linux (14) Snippet (13) service mix (6) soa (4)

Roman Number to decimal

 Map mapping = new HashMap();

    Conversion() {
        mapping.put("I", 1);
        mapping.put("V", 5);
        mapping.put("X", 10);
        mapping.put("L", 50);
        mapping.put("C", 100);
        mapping.put("D", 500);
        mapping.put("M", 1000);

    }

    /**
     * @param romanNumber
     * @return
     */
    public int romanToDecimal(String romanNumber) {
        int result = 0;


        if (romanNumber.length() == 0) {
            return result;
        }

        if (romanNumber.length() == 1) {
            return (Integer) mapping.get(romanNumber);
        }

        else {
            int leftEnd = (Integer) mapping.get(romanNumber.charAt(0) + "");

            if (leftEnd >= (Integer) mapping.get(romanNumber.charAt(1) + "")) {

                result +=  leftEnd;
            } else {
                result += - leftEnd;
            }
            result += romanToDecimal(romanNumber.substring(1));
        }
        return result;
    }

Search 24 Bytes

Loading...