博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode -- Integer to Roman
阅读量:5132 次
发布时间:2019-06-13

本文共 1626 字,大约阅读时间需要 5 分钟。

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;    }}

 

 

 

转载于:https://www.cnblogs.com/little-YTMM/p/5218445.html

你可能感兴趣的文章
数据从mysql迁移至oracle时知识点记录(一)
查看>>
[No0000120]Python教程3/9-第一个Python程序
查看>>
java-web乱码问题解决
查看>>
222 Count Complete Tree Nodes
查看>>
SpringMVC拦截器
查看>>
Java Database Derby Instance 2
查看>>
[Django]我的第一个网页,报错啦~(自己实现过程中遇到问题以及解决办法)
查看>>
python-笔记(二)数据类型
查看>>
VS2013的一些常用快捷键
查看>>
如何去各型MCU的官网上下载正确的数据手册
查看>>
Ulink2 "No Ulink Device found" 解决办法
查看>>
php使用imagick进行图像处理
查看>>
前端面试题(3)
查看>>
Hadoop伪分布式搭建(本人新手,欢迎大家多多指导和关照)
查看>>
客户端储存
查看>>
MeshLab编译理解
查看>>
String
查看>>
网站搭建 (第01天) 模型设计
查看>>
[翻译]用 Puppet 搭建易管理的服务器基础架构(3)
查看>>
心情随笔——2012121
查看>>