Format code in RomanToInteger.java

* Format code
* Remove redundant code
This commit is contained in:
yanglbme
2019-03-19 08:40:02 +08:00
committed by GitHub
parent c14af04b58
commit 971d5f75e9

View File

@ -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);
}
}