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;
}
相关推荐
贾斯汀玛尔斯几秒前
每天学一个算法--LSM-Tree(Log-Structured Merge Tree)
java·算法·lsm-tree
bitt TRES1 分钟前
springboot与springcloud对应版本
java·spring boot·spring cloud
Y0011123616 分钟前
JavaWeb-end
java·servlet·web
万少1 小时前
Vibe Coding不停歇,移动端 TRAE SOLO 让你用手机也能编程啦
前端·javascript·后端
bzmK1DTbd1 小时前
Git版本控制:Java项目中的分支管理与合并策略
java·开发语言·git
kyriewen111 小时前
WebAssembly:前端界的“外挂”,让C++代码在浏览器里跑起来
开发语言·前端·javascript·c++·单元测试·ecmascript
烛衔溟2 小时前
TypeScript 接口的基本使用 —— 定义对象形状
前端·javascript·typescript
铁皮饭盒3 小时前
成为AI全栈 - 第3课:路由 RESTful Elysia 状态码 设计规范
前端·后端·全栈
顾昂_3 小时前
Web 性能优化完全指南
前端·面试·性能优化
JWASX3 小时前
【RocketMQ 生产者和消费者】- 事务源码分析(1)
java·rocketmq·java-rocketmq