Friday, February 7, 2014

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:
Trivial implementation question.
Tips: CM means M - C, same for other two letters word.


public class Solution {
    public String intToRoman(int num) {
        int[] val = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
        String[] sym = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        StringBuilder result = new StringBuilder();
        int i = 0;
        while(num != 0){
            int times = num / val[i];
            for( ; times >= 1; times--){
                result.append(sym[i]);
            }
            num = num % val[i];
            i++;
        }
        return result.toString();
    }
}

No comments:

Post a Comment