Leet Code 12.整数转罗马数字

给定一个整数,将其转为罗马数字。输入确保在1到3999的范围内。

罗马数字包含以下七种字符:I,V,X,L,C,D,M

I代表数值1
V代表数值5
X代表数值10
L代表数值50
C代表数值100
D代表数值500
M代表数值1000

通常情况,小的数字放在大的数字右边。但是有六种特殊的情况:

  • I可以放在V和X左边,表示4和9
  • X可以放在L和C的左边,表示40和90
  • C可以放在D和M的左边,表示400和900

主要思想是贪心思想,需要从最大值遍历到最小值。也可以当作进制转换,从最大值转换到最小值。

提交代码

import java.util.*;

import static java.lang.Math.min;

public class leetcode {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        String str = intToRoman(num);
        System.out.println(str);
    }

    public static String intToRoman(int num) {
        //初始化
        int[] Roman_num = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
        String[] Roman_str = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};

        StringBuilder result = new StringBuilder();
        //贪心算法
        for(int i = 12; i>=0; i--) {
            while(num >= Roman_num[i]) {
                num = num - Roman_num[i];
                result.append(Roman_str[i]);
            }
        }
        retu
原文地址:https://www.cnblogs.com/chenshaowei/p/12613379.html