LeetCode-12. Integer to Roman

来源:互联网 发布:交换机端口隔离作用 编辑:程序博客网 时间:2024/06/02 03:04

一、问题描述

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
原创粉丝点击