每日一道Leetcode -12. 整数转罗马数字【字符串】

在这里插入图片描述在这里插入图片描述

class Solution {
    // 思路
    // 定义两个数组变量分别存储【字符,数值】, 然后遍历
    // 如果大于i, 当前值减去i,字符串加值,只要不等于0就继续往前滑动
    // 因为4,9,40,90,400,900是特例,所以也存到之前的地方

    // 从大到小存入不同数值
    int[] keys = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
    // 将上面对应数值存入字符数组
    String[] values = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
    // 定义转换函数【给定整数转罗马数字】
    public String intToRoman(int num) {
        // 由于需要字符串连接,所以使用使用StringBuilder类
        // .append(String str) 字符串连接
        // .toString():返回一个与缓冲器内容相同的字符串
        StringBuilder ans = new StringBuilder();
        //遍历数组,判断当前值与数组值大小,大直接减,若小往后滑
        for(int i = 0; i<keys.length;i++){
            if(num>=0){
                // 要不断相减,比如2001,可能就存在两个1000的情况
                while(num>=keys[i]){
                    num-=keys[i];
                    ans.append(values[i]);
                }
            }
        }
        return ans.toString();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值