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;
}
相关推荐
William_Xu1 小时前
React 新旧生命周期对比
前端
什巳1 小时前
JAVA练习275-乘积最大子数组
java·开发语言·数据结构·算法
lang201509281 小时前
Apache POI Word(docx) 实战教程:从入门到精通表格合并、图片插入与文档合并
java·开发语言·word
小牛不牛的程序员2 小时前
利用Claude Code构建自动化需求挖掘工具:从原理到实践
java·算法·自动化
wear工程师2 小时前
腾讯天美一面:从 HashMap 到 Spring 事务,面试官这套连环问到底在考什么
java·面试
PBitW2 小时前
为什么vite中TS报错,可以继续运行?Webpack不行?💡
前端·typescript
GISer_Jing2 小时前
一套H5跑通三端:App+小程序内嵌H5跨端适配全栈解决方案
前端·前端框架·ai编程
码云之上2 小时前
项目团队从 5 人扩到 15 人,我写了个 CLI 让 IDE 共享 AI 规则
前端·人工智能·后端
飞天狗2 小时前
LCP / INP / CLS 三个维度的实战调优:把 Web Vitals 从不及格拉到优秀的完整路径
前端·性能优化