問題:
ソリューション:
パッケージ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); } }