-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRomanToInteger.java
39 lines (36 loc) · 1.45 KB
/
RomanToInteger.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.HashMap;
import java.util.Map;
public class RomanToInteger {
public static void main(String[] args) {
RomanToInteger romanToInteger = new RomanToInteger();
int number = romanToInteger.convert("MCMXCIV");
System.out.print(number);
}
public int convert(String s) {
Map<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);
char[] characters = s.toCharArray();
int sum = 0;
for (int i=0; i<characters.length; i++) {
if (characters[i] == 'I' && i < characters.length - 1 && (characters[i+1] == 'V' || characters[i+1] == 'X')) {
sum = sum + (map.get(characters[i+1]) - map.get(characters[i]));
i++;
} else if (characters[i] == 'X' && i < characters.length - 1 && (characters[i+1] == 'L' || characters[i+1] == 'C')) {
sum = sum + (map.get(characters[i+1]) - map.get(characters[i]));
i++;
} else if (characters[i] == 'C' && i < characters.length - 1 && (characters[i+1] == 'D' || characters[i+1] == 'M')) {
sum = sum + (map.get(characters[i+1]) - map.get(characters[i]));
i++;
} else {
sum += map.get(characters[i]);
}
}
return sum;
}
}