Leetcode 12. Integer to Roman

Description:

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

Thinking:

Since the input is between 1 to 3999. We can solve the problem by digit. And we need to have a 4 String arrays, which is for unit, decade, hundreds and thousands.

Steps:

  1. Check whether input is valid.
  2. Get each digit of the integer and look up the Roman numeral in the corresponding String array.
  3. Use StringBuilder to build the Roman String.

Code:

public class Solution {
    public String intToRoman(int num) {
        if(num <=0 || num > 3999) return new String();
        StringBuilder result = new StringBuilder();
        String[] unit = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
        String[] decade = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
        String[] hundred = {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
        String[] thousand = {"", "M","MM","MMM"};
        result.append(thousand[num/1000]);
        num = num %1000;
        result.append(hundred[num/100]);
        num = num%100;
        result.append(decade[num/10]);
        num = num%10;
        result.append(unit[num]);
        return result.toString();
    }
}

Conclusion:

The problem becomes quite easy if we can think out that use 4 String arrays to store the information Roman numeral. This method is used for that cases number is not too big so that we can enumerate them.

results matching ""

    No results matching ""