LeetCode-12. Integer to Roman

一、问题描述

Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.

二、解题思路

将1-3999之内的任一数字转化成罗马字符形式。罗马数字共有7个,即Ⅰ(1)、Ⅴ(5)、Ⅹ(10)、Ⅼ(50)、Ⅽ(100)、Ⅾ(500)和Ⅿ(1000)。本文的解题思路是,用一个String数组来存储个位、十位、百位和千位的罗马表示形式,然后将要操作的阿拉伯数字的个位、十位、百位、千位分别做对应。

罗马数字表达的相关规则https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97

三、源代码

public class Solution {
    public String intToRoman(int num) {
       // String[] thousand_string={"","M","MM","MMM"};
        //String[] hundred_string={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
        //String[] ten_string={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
        //String[] num_string={"","I","II","III","IV","V","VI","VII","VIII","IX"};
        String[][] arrays={{"","I","II","III","IV","V","VI","VII","VIII","IX"},{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
        {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},{"","M","MM","MMM"}};
        String result="";
        int index=0;
        while(num>0){
            result=arrays[index][num%10]+result;
            num/=10;
            index++;
        }
        return result;
       // int num_int=num%10;
        //int ten_int=(num-num_int)%10;
        //int hundred_int=(num-num_int-ten_int*10)%100;
        //int thousand_int=(num-num_int-ten_int*10-hundred_int*100)%1000;
        //return thousand_string[thousand_int]+hundred_string[hundred_int]+ten_string[ten_int]+num_string[num_int];
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值