Skip to content

Commit dbebab0

Browse files
authored
Merge pull request TheAlgorithms#720 from pandeyarun709/TheAlgo
Add Roman To Integer conversion
2 parents 53b2b69 + 971d5f7 commit dbebab0

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

Conversions/RomanToInteger.java

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import java.util.*;
2+
3+
public class RomanToInteger {
4+
5+
private static Map<Character, Integer> map = new HashMap<>() {{
6+
put('I', 1);
7+
put('V', 5);
8+
put('X', 10);
9+
put('L', 50);
10+
put('C', 100);
11+
put('D', 500);
12+
put('M', 1000);
13+
}};
14+
15+
/**
16+
* This function convert Roman number into Integer
17+
*
18+
* @param A Roman number string
19+
* @return integer
20+
*/
21+
public static int romanToInt(String A) {
22+
23+
char prev = ' ';
24+
25+
int sum = 0;
26+
27+
int newPrev = 0;
28+
for (int i = A.length() - 1; i >= 0; i--) {
29+
char c = A.charAt(i);
30+
31+
if (prev != ' ') {
32+
// checking current Number greater then previous or not
33+
newPrev = map.get(prev) > newPrev ? map.get(prev) : newPrev;
34+
}
35+
36+
int currentNum = map.get(c);
37+
38+
// if current number greater then prev max previous then add
39+
if (currentNum >= newPrev) {
40+
sum += currentNum;
41+
} else {
42+
// subtract upcoming number until upcoming number not greater then prev max
43+
sum -= currentNum;
44+
}
45+
46+
prev = c;
47+
}
48+
49+
return sum;
50+
}
51+
52+
public static void main(String[] args) {
53+
int sum = romanToInt("MDCCCIV");
54+
System.out.println(sum);
55+
}
56+
}

0 commit comments

Comments
 (0)