zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Hibernate的检索
    Java 多线程
    可信软件开发
    Linux复习3
    Linux复习2
    Linux复习1
    使用Sourcetree(for windows)建立github同步仓库
    Session技术
    Cookie技术
    Ajax技术
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12613379.html
Copyright © 2011-2022 走看看