• leetcode — two-sum


    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * Source : https://oj.leetcode.com/problems/roman-to-integer/
     *
     * Created by lverpeng on 2017/7/10.
     *
     * Given a roman numeral, convert it to an integer.
     * Input is guaranteed to be within the range from 1 to 3999.
     *
     */
    public class RomanToInteger {
        private static final Map<Character, Integer> map = new HashMap<Character, Integer>(){
            {
                put('V', 5);
                put('L', 50);
                put('I', 1);
                put('D', 500);
                put('X', 10);
                put('M', 1000);
                put('C', 100);
            }
        };
    
        /**
         * 较小的数在较大的数的左边则结果为:较大的数减去较小的数
         * 较大的数在较小的数的右边则结果为:较大的数和较小的数的和
         * 从第二个字符开始依次遍历每一个字符:
         *  先加上第一个字符的值(后面会判断如果右边的数大于该值,则会减去)
         *  将当前数与前一个数进行比较
         *      如果当前数更大,则加上该数
         *      否则,减去前面一个数,再减去两个数共同表示的数:较大的减去较小的
         *
         * @param numStr
         * @return
         */
        public int romanToInteger (String numStr) {
            int result =  map.get(numStr.charAt(0));
            for (int i = 1; i < numStr.length(); i++) {
                int pre = map.get(numStr.charAt(i - 1));
                int current = map.get(numStr.charAt(i));
                if (pre >= current) {
                    result += current;
                } else {
                    result = result - pre + (current - pre);
                }
            }
            return result;
        }
    
        public static void main(String[] args) {
            RomanToInteger romanToInteger = new RomanToInteger();
            System.out.println(romanToInteger.romanToInteger("M") + "------1000" );
            System.out.println(romanToInteger.romanToInteger("MXXXVIII") + "------1038");
            System.out.println(romanToInteger.romanToInteger("II") + "------2");
            System.out.println(romanToInteger.romanToInteger("III") + "------3");
            System.out.println(romanToInteger.romanToInteger("IV") + "------4");
            System.out.println(romanToInteger.romanToInteger("MMMXCIV") + "------3094");
        }
    }
    
  • 相关阅读:
    [转]ExtJS3.0与KindEditor4.1.2整合
    [转]Ext.grid常用属性和方法
    Extjs gridpanel 合并单元格
    [转]Httrack工具与使用指南
    [转]Teleport Ultra/Teleport Pro的冗余代码批量清理方法
    [转]最全的用正则批量去除Teleport Pro整站下载文件冗余代码
    Teleport Pro使用教程
    如何通过Dreamweaver批量对整个站点或目录进行代码搜索或部分全部替换
    [转]使用DW正则表达式批量替换实例介绍
    [转]tppabs是什么?如何去除tppabs?
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7323245.html
Copyright © 2020-2023  润新知