Q12整数转罗马数字

思路

就是模拟规则

代码

java 复制代码
class Solution {
   public String intToRoman(int num) {
        Parameter parameter = new Parameter();
        parameter.num = num;
        parameter.result = "";
        while (parameter.num != 0){
            convert(parameter);
        }
        return parameter.result;
    }

    private void convert(Parameter parameter) {
        String number = Integer.toString(parameter.num);
        char firstChar = number.charAt(0);
        if (firstChar == '4'){
            handle4(parameter);
        } else if (firstChar == '9') {
            handle9(parameter);
        } else if (parameter.num >= 1000) {
            parameter.result = parameter.result + "M";
            parameter.num = parameter.num - 1000;
        } else if (parameter.num >= 500) {
            parameter.result = parameter.result + "D";
            parameter.num = parameter.num - 500;
        }else if (parameter.num >= 100) {
            parameter.result = parameter.result + "C";
            parameter.num = parameter.num - 100;
        }else if (parameter.num >= 50) {
            parameter.result = parameter.result + "L";
            parameter.num = parameter.num - 50;
        }else if (parameter.num >= 10) {
            parameter.result = parameter.result + "X";
            parameter.num = parameter.num - 10;
        }else if (parameter.num >= 5) {
            parameter.result = parameter.result + "V";
            parameter.num = parameter.num - 5;
        }else if (parameter.num >= 1) {
            parameter.result = parameter.result + "I";
            parameter.num = parameter.num - 1;
        }
    }

    private void handle9(Parameter parameter) {
        if (parameter.num >= 900){
            parameter.result = parameter.result + "CM";
            parameter.num = parameter.num - 900;
        } else if (parameter.num >= 90) {
            parameter.result = parameter.result + "XC";
            parameter.num = parameter.num - 90;
        } else if (parameter.num >= 9) {
            parameter.result = parameter.result + "IX";
            parameter.num = parameter.num - 9;
        }
    }

    private void handle4(Parameter parameter) {
        if (parameter.num >= 400){
            parameter.result = parameter.result + "CD";
            parameter.num = parameter.num - 400;
        } else if (parameter.num >= 40) {
            parameter.result = parameter.result + "XL";
            parameter.num = parameter.num - 40;
        } else if (parameter.num >= 4) {
            parameter.result = parameter.result + "IV";
            parameter.num = parameter.num - 4;
        }
    }


}
class Parameter{
    int num;
    String result;
}
相关推荐
芝士加20 分钟前
Playwright vs MidScene:自动化工具“双雄”谁更适合你?
前端·javascript
Carlos_sam1 小时前
OpenLayers:封装一个自定义罗盘控件
前端·javascript
前端南玖2 小时前
深入Vue3响应式:手写实现reactive与ref
前端·javascript·vue.js
wordbaby2 小时前
React Router 双重加载器机制:服务端 loader 与客户端 clientLoader 完整解析
前端·react.js
皮皮林5512 小时前
SpringBoot 加载外部 Jar,实现功能按需扩展!
java·spring boot
itslife2 小时前
Fiber 架构
前端·react.js
3Katrina2 小时前
妈妈再也不用担心我的课设了---Vibe Coding帮你实现期末课设!
前端·后端·设计
hubber2 小时前
一次 SPA 架构下的性能优化实践
前端
rocksun2 小时前
认识Embabel:一个使用Java构建AI Agent的框架
java·人工智能
可乐只喝可乐3 小时前
从0到1构建一个Agent智能体
前端·typescript·agent