From c14af04b58ae356c51eca663dcc34d421858dba8 Mon Sep 17 00:00:00 2001 From: pandeyarun709 Date: Mon, 18 Mar 2019 21:22:51 +0530 Subject: [PATCH 1/2] Add Roman To Integer conversion --- Conversions/RomanToInteger.java | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Conversions/RomanToInteger.java diff --git a/Conversions/RomanToInteger.java b/Conversions/RomanToInteger.java new file mode 100644 index 000000000..9179b58df --- /dev/null +++ b/Conversions/RomanToInteger.java @@ -0,0 +1,60 @@ +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 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; + } + + + public static void main(String[] args) { + + + int sum = romanToInt("MDCCCIV") ; + System.out.println(sum); + } + +} \ No newline at end of file From 971d5f75e95afb2cd513c9ce4193c9fd8c80844d Mon Sep 17 00:00:00 2001 From: yanglbme Date: Tue, 19 Mar 2019 08:40:02 +0800 Subject: [PATCH 2/2] Format code in RomanToInteger.java * Format code * Remove redundant code --- Conversions/RomanToInteger.java | 108 +++++++++++++++----------------- 1 file changed, 52 insertions(+), 56 deletions(-) diff --git a/Conversions/RomanToInteger.java b/Conversions/RomanToInteger.java index 9179b58df..35b04f9ee 100644 --- a/Conversions/RomanToInteger.java +++ b/Conversions/RomanToInteger.java @@ -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 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 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); - } - -} \ No newline at end of file + public static void main(String[] args) { + int sum = romanToInt("MDCCCIV"); + System.out.println(sum); + } +}