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 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号