zoukankan      html  css  js  c++  java
  • LeetCode -- Integer to Roman

    Question:

    Given an integer, convert it to a roman numeral.

    Input is guaranteed to be within the range from 1 to 3999.

    Analysis:

    给出一个整数,将它转换成罗马数字。

    注意:保证输入的数字在1~3999之间。

    思路: 主要是首先要知道罗马数字与阿拉伯数字之间的转换关系。具体规则自行百度。观察规律可知,只有4,9,40,90……是由右面大的减去左边小的,其他的都是在右边直接累加。因此将所有特殊情况罗列出来即可。

    1. 递归的解决方案。

    public class Solution {
        public String intToRoman(int num) {
            if(num >= 1000) return "M" + intToRoman(num - 1000);
            if(num >= 900) return "CM" + intToRoman(num - 900);
            if(num >= 500) return "D" + intToRoman(num - 500);
            if(num >= 400) return "CD" + intToRoman(num - 400);
            if(num >= 100) return "C" + intToRoman(num - 100);
            if(num >= 90) return "XC" + intToRoman(num - 90);
            if(num >= 50) return "L" + intToRoman(num - 50);
            if(num >= 40) return "XL" + intToRoman(num -40);
            if(num >= 10) return "X" + intToRoman(num - 10);
            if(num >= 9) return "IX" + intToRoman(num - 9);
            if(num >= 5) return "V" + intToRoman(num - 5);
            if(num >= 4) return "IV" + intToRoman(num - 4);
            if(num >= 1) return "I" + intToRoman(num -1);
            return "";
        }
    }

    2. 非递归的解决方案。

    public class Solution {
        public String intToRoman(int num) {
            String[] str = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};
            int[] val = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
            String result = "";
            for(int i=val.length-1; num != 0; i--) {
                while(num >= val[i]) {
                    num -= val[i];
                    result += str[i];
                }
            }
            return result;
        }
    }
     
  • 相关阅读:
    Web前端笔记和简历模板
    三种 Loading 制作方案
    注册中心之健康检测机制
    HTTPS与加密
    多线程-JUC
    date日期类型
    spring配置文件约束
    Tomcat web.xml 中的listener、 filter、servlet 加载顺序
    java 日志框架总结
    mysql常用命令
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5218445.html
Copyright © 2011-2022 走看看