This blog will soon be merged with

JavaByPatel

which explains each solution in detail, to visit new blog, click JavaByPatel

Wednesday, 24 December 2014

Integer to Roman Number Representation


package miscellaneous;

import java.util.LinkedHashMap;
import java.util.Map;


public class IntegerToRomanNumber {
 
 public static void main(String[] args) {
  new IntegerToRomanNumber();
 }
 private Map<Integer, String> init() {
  Map<Integer, String> m = new LinkedHashMap<Integer, String>();
  m.put(100, "C");
  m.put(90, "XC");  
  m.put(50, "L");
  m.put(40, "XL");
  m.put(10, "X");
  m.put(9, "IX");
  m.put(5, "V");
  m.put(4, "IV");
  m.put(1, "I"); 
  return m;
 }

 public IntegerToRomanNumber() {
  Map<Integer, String> map = init();
  System.out.println(getRomanEquivalent(208, map));
 }
 
 private String getRomanEquivalent(int number, Map<Integer, String> map){
  if(number<=0)
   return ""+number;
  
  if(map.containsKey(number))
   return (String)map.get(number);
  
  String str = "";
  for (Map.Entry<Integer, String> entry : map.entrySet()) {
   int key = entry.getKey();
   while(key<=number){
    str = str + entry.getValue();
    number = number - key;
   }
  }
  return str;
 }

}

No comments:

Post a Comment