012整数转罗马数字

写在前面,参考的是力扣官网的解答。

一、java算法

/*
 * @lc app=leetcode.cn id=12 lang=java
 *
 * [12] 整数转罗马数字
 */

// @lc code=start
class Solution {
    public String intToRoman(int num) {
        //罗马数字由7个单字母符号组成,每个符号都有自己的价值,此外,减法规则给出了额外的6个符号
        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
        StringBuilder sb=new StringBuilder();
        //循环每一个symbols,直到数值为0
        for(int i=0;i<values.length&&num>=0;i++){
            //当symbols的值小于时进入循环
            //因为时从左开始的,所以每次用的都是尽可能最大的值去匹配
            while(values[i]<=num){
                //如果匹配则减掉当前的symbols
                num-=values[i];
                //将该symbols的符号添加到sb后面
                sb.append(symbols[i]);
            }
        }
        //数除sb
        return sb.toString();
    }
}
// @lc code=end

二、图解算法

1、算法原理

2、动图演示算法过程

posted @ 2020-09-01 11:29  阿狸狸爱吃饭  阅读(86)  评论(0编辑  收藏  举报