leetcode-java.T012_IntegerToRoman 数字转罗马数字

本文提供了一种将整数转换为罗马数字的方法,适用于1到3999之间的数字。通过使用预定义的罗马数字表示数组,该算法能够有效地将输入数字转换为相应的罗马数字形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

敬请关注博客,后期不断更新优质博文,谢谢

每天坚持刷leetcode----- 数字转罗马数字

 

package leetcode.T012_IntegerToRoman;
/**   
 * @Title: Solution.java 
 * @Package leetcode.T012_IntegerToRoman 
 * @Description: TODO 
 * @author zhouzhixiang  
 * @date 2017-6-4 上午1:31:40 
 * @version V1.0   
 */
public class Solution {

	 /**
     * <pre>
     * Given an integer, convert it to a roman numeral.
     *
     * Input is guaranteed to be within the range from 1 to 3999.
     *
     * 罗马数字的表示:
     * 个位数举例
     * (I, 1)  (II, 2)  (III, 3)  (IV, 4)  (V, 5)  (VI, 6)  (VII, 7)  (VIII, 8)  (IX, 9)
     *
     * 十位数举例
     * (X, 10)  (XI, 11)  (XII, 12)  (XIII, 13)  (XIV, 14)  (XV, 15)  (XVI, 16)
     * (XVII, 17)  (XVIII, 18)  (XIX, 19)  (XX, 20)  (XXI, 21)  (XXII, 22)
     * (XXIX, 29)  (XXX, 30)  (XXXIV, 34)  (XXXV, 35)  (XXXIX, 39)  (XL, 40)
     * (L, 50)  (LI, 51)  (LV, 55)  (LX, 60)  (LXV, 65)  (LXXX, 80)  (XC, 90)
     * (XCIII, 93)  (XCV, 95)  (XCVIII, 98)  (XCIX, 99)
     *
     * 百位数举例
     * (C, 100)  (CC, 200)  (CCC, 300)  (CD, 400)  (D, 500)  (DC, 600)  (DCC, 700)
     * (DCCC, 800)  (CM, 900)  (CMXCIX, 999)
     *
     * 千位数举例
     * (M, 1000)  (MC, 1100)  (MCD, 1400)  (MD, 1500)  (MDC, 1600)  (MDCLXVI, 1666)
     * (MDCCCLXXXVIII, 1888)  (MDCCCXCIX, 1899)  (MCM, 1900)  (MCMLXXVI, 1976)
     * (MCMLXXXIV, 1984)  (MCMXC, 1990)  (MM, 2000)  (MMMCMXCIX, 3999)
     *
     * 题目大意:
     * 输入一个数字,将它转成一个罗马数字,输入的数字在[1, 3999]之间
     *
     * </pre>
     *
     * @param num
     * @return
     */
	
	public static void main(String[] args) {
		System.out.println(new Solution().intoRoman(199));
	}
	
	// 参考
	public String intoRoman(int num){
		String[][] base = new String[][]{
                {"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 = "";
		
		// 从个数开始遍历,每遍历一次,result的个位就除去
		// 同时将被除去的各位转成Roman
		for (int i = 0; num!=0; num/=10, i++) {
			
			// 如果不为0,说明个位上有值,要进行增加操作
			if(num%10!=0){
				// 拼接结果
				result = base[i][num%10-1]+result;
			}
			
		}
		return result;
	}
}

 

欢迎加入Java猿社区
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值