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;
}
相关推荐
2501_9364156924 分钟前
可变参数&综合练习&斗地主游戏
java·windows·游戏
别惊醒渔人1 小时前
Vue3 Diff 优化:最长递增子序列 LIS
前端·javascript·vue.js
颜酱1 小时前
07 | 把字段与指标同步到 Qdrant(生成阶段)
前端·人工智能·后端
用户059540174461 小时前
把AI长期记忆测试从手动验证换成pytest,2天揪出11个隐藏Bug
前端·css
极客先躯2 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
xqqxqxxq2 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
wang09072 小时前
自己动手写一个spring之aop_1
java·后端·spring
lichenyang4532 小时前
从 Vite 空项目到 AIGC 图片工作台:我如何打通生图、任务轮询、生成库与 Canvas 动态特效
前端·人工智能
泡沫冰@3 小时前
上章节中文件的讲解
前端·网络·nginx
国科安芯3 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v