Integer to Roman

本贴最后更新于 2594 天前,其中的信息可能已经时移俗易

题目描述

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

把数字转换为罗马数字,数字范围在 1~3999 之间。

解题思路

罗马数字表:

罗马字母 I V X L C D M
阿拉伯数字 1 5 10 50 100 500 1000

对应数字:

类别 罗马数字
0-3 I-III
4 IV
5-8 V-VIII
9 IX

先低位后高位判断当前类别,然后存储在 StringBuilder 内,存储时按类别反向存储。最后把 StringBuilder 翻转。

代码

class Solution { public String intToRoman(int num) { StringBuilder sb = new StringBuilder(); char[] roman = {'I', 'V', 'X', 'L', 'C', 'D', 'M'}; for (int i = 0; num > 0; i++) { int tmp = num % (int)Math.pow(10, 1); num /= Math.pow(10, 1); if (tmp < 4) { for (int j = 0; j < tmp; j++) sb.append(roman[2*i]); } else if (tmp == 4) { sb.append(roman[2*i+1]); sb.append(roman[2*i]); } else if (tmp < 9) { for (int j = 0; j < tmp-5; j++) { sb.append(roman[2*i]); } sb.append(roman[2*i+1]); } else { sb.append(roman[2*(i+1)]); sb.append(roman[2*i]); } } return sb.reverse().toString(); } }
  • 算法
    435 引用 • 254 回帖 • 24 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...