mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-15 01:40:49 +08:00
Format code in RomanToInteger.java
* Format code * Remove redundant code
This commit is contained in:
@ -1,60 +1,56 @@
|
||||
import java.util.*;
|
||||
|
||||
public class RomanToInteger {
|
||||
|
||||
/*
|
||||
This function convert Roman number into Integer
|
||||
@param A is Roman number string
|
||||
*/
|
||||
public static int romanToInt(String A) {
|
||||
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 c = A.charAt(A.length()-1);
|
||||
char prev = ' ';
|
||||
|
||||
int sum =0;
|
||||
|
||||
int newPrev = 0, currentNum =0;
|
||||
for(int i = A.length() -1;i>=0;i--)
|
||||
{
|
||||
c = A.charAt(i);
|
||||
|
||||
|
||||
if(prev != ' ') {
|
||||
//checking current Number greater then previous or not
|
||||
newPrev = map.get(prev) > newPrev ? map.get(prev) : newPrev ;
|
||||
}
|
||||
|
||||
|
||||
currentNum = map.get(c);
|
||||
|
||||
if(currentNum >= newPrev ) //if current number greater then prev max previous then add
|
||||
{
|
||||
sum += currentNum;
|
||||
}
|
||||
else {
|
||||
|
||||
sum -= currentNum; // subtract upcoming number until upcoming number not greater then prev max
|
||||
}
|
||||
|
||||
prev = c;
|
||||
}
|
||||
|
||||
return sum;
|
||||
|
||||
private static Map<Character, Integer> map = new HashMap<>() {{
|
||||
put('I', 1);
|
||||
put('V', 5);
|
||||
put('X', 10);
|
||||
put('L', 50);
|
||||
put('C', 100);
|
||||
put('D', 500);
|
||||
put('M', 1000);
|
||||
}};
|
||||
|
||||
/**
|
||||
* This function convert Roman number into Integer
|
||||
*
|
||||
* @param A Roman number string
|
||||
* @return integer
|
||||
*/
|
||||
public static int romanToInt(String A) {
|
||||
|
||||
char prev = ' ';
|
||||
|
||||
int sum = 0;
|
||||
|
||||
int newPrev = 0;
|
||||
for (int i = A.length() - 1; i >= 0; i--) {
|
||||
char c = A.charAt(i);
|
||||
|
||||
if (prev != ' ') {
|
||||
// checking current Number greater then previous or not
|
||||
newPrev = map.get(prev) > newPrev ? map.get(prev) : newPrev;
|
||||
}
|
||||
|
||||
int currentNum = map.get(c);
|
||||
|
||||
// if current number greater then prev max previous then add
|
||||
if (currentNum >= newPrev) {
|
||||
sum += currentNum;
|
||||
} else {
|
||||
// subtract upcoming number until upcoming number not greater then prev max
|
||||
sum -= currentNum;
|
||||
}
|
||||
|
||||
prev = c;
|
||||
}
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
int sum = romanToInt("MDCCCIV") ;
|
||||
System.out.println(sum);
|
||||
}
|
||||
|
||||
}
|
||||
public static void main(String[] args) {
|
||||
int sum = romanToInt("MDCCCIV");
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user