【LeetCode解答六】Integer to Roman问题Java解答

Given an integer, convert it to a roman numeral.

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

以上是题目要求
想做这道题必须要明白罗马数字是怎么写的

阿拉伯数字 罗马数字
1 I
4 IV
5 V
9 IX
10 X
40 XL
50 L
90 XC
100 C
400 CD
500 D
900 CM
1000 M
这样就是1-1000的表示方式,题目要求最多输入3999,所以这就够用了,可以写代码了
package Q12IntegerToRoman;

import java.util.Scanner;

/**
 * @author Bryan
 * @since 2017/11/2 18:45
 */
public class Solution {
    public static String intToRoman(int num) {
        String str = "";
        String[] strings = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        int[] values = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
        for (int i = 12 ; num !=0 ; i --) {
            while (num >= values[i]) {
                num -= values[i];
                str += strings[i];
            }
        }
        return str;
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值