Wednesday, May 17, 2017

12. Integer to Roman

Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.



Solution:

Then idea is to continuously appending the letter with largest possible value to the result and decreasing the input number until there is no other value to append.



Code:


public class Solution {
    public String intToRoman(int num) {
        String res = "";
        String[] Roman = new String[] {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
        int[] value = new int[] {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        for (int i = 0; i < 13; i++) { 
            while (num >= value[i]) {
            num -= value[i];
            res += Roman[i];
            }
        } 
        return res;
    }
}