File tree 1 file changed +56
-0
lines changed
1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments