力扣第12题整数转罗马数字

一、题目:12. 整数转罗马数字
12
二、题目解析:

  1. 罗马数字有以下七种基本字符:I,V,X,L,C,D 和 M。
  2. 整数转换为罗马数字的基本思路是从大到小依次减去对应的罗马数字,直到减不下去为止,然后转到下一个小的罗马数字,继续减,依次类推,直到所有的数字都转换完成。
  3. 由于罗马数字的表示方法有一定的规律,我们可以将每个数字的转换规则存储在一个二维数组中,然后通过查找数组中的规则来进行转换。

三、实现思路:

  1. 我们可以将每个罗马数字都表示为对应的整数,例如I表示为1,V表示为5,X表示为10等等。这样,在将整数转换为罗马数字时,我们可以从大到小依次减去对应的整数,直到数字变为0。
  2. 我们可以使用两个数组:一个数组存储每个罗马数字对应的整数值,另一个数组存储每个罗马数字本身。在循环中,我们可以从大到小遍历这两个数组,每次判断当前整数是否大于等于当前罗马数字对应的整数值。如果大于等于,则将当前罗马数字添加到结果字符串中,并将整数减去对应的整数值。如果小于,则遍历下一个罗马数字。
  3. 最终,当整数变为0时,我们就得到了对应的罗马数字表示。

四、代码实现:

public static String intToRoman(int num) {
    int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
    String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
    StringBuilder sb = new StringBuilder();
    int i = 0;
    while (num > 0) {
        if (num >= values[i]) {
            sb.append(symbols[i]);
            num -= values[i];
        } else {
            i++;
        }
    }
    return sb.toString();
}

五、测试结果:
12
六、结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Run,boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值