整数にleetcode-13 - ローマ数字

 

問題:

 

 

ソリューション:

パッケージcom.example.demo、

インポートのjava.util.HashMap;
 インポートjava.util.Map; 

パブリック クラスTest13 { 

    / ** 
     *ローマを整数に
     大きな文字よりもフロントの後ろに*ローマ字、提供の特性に応じて二つのポインタ、現在の現在の代表は現在の数であり、
     現在の事前の大きさを決定するために蓄積し、事前<現在、番号の間違いを表す場合、とき、前代表の前に*その数
     *保存は二回前(数がされているべきであることなく、追加、なぜなら、元の減算、またはプラス一度マイナス2)の
     IVは例えば:* 
     *誤った結果である:> 1 + 5 = 6 ==私たちは、私とVは数の背後にあるので、追加するだけでなく、私の後ろに、私は二回追加された追加べきではありません
     ので、*私は2つを失うする必要が
     4:正しい結果を* 
     * 
     * @paramのSの
     *の@return 
     * / 
    公共 int型 romanToInt(文字列S){
        地図<Character, Integer> map = new HashMap<>();
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);

        int res = 0;
        char[] chars = s.toCharArray();
        int pre = 1000;
        for (char c : chars) {
            Integer current = map.get(c);
            res += current;
            if (current > pre) {
                res = res - pre * 2;
            }
            pre = current;
        }
        return res;
    }

    public static void main(String[] args) {
        Test13 t = new Test13();
        int i = t.romanToInt("MCMXCIV");
        System.out.println(i);
    }
}

 

おすすめ

転載: www.cnblogs.com/nxzblogs/p/11225933.html