Integer to Roman 问题

leetcode
java

1.问题描述

Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.
题目翻译:
把给定的一个整数翻译成罗马数字,这个整数限定在1到3999范围内。

2.解题思路

这道题给的范围很巧妙,因为在1-3999这个范围内罗马数字是有规律可寻的:

{"","I","II","III","IV","V","VI","VII","VIII","IX"},
{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
{"","M","MM","MMM"}

可以看到每一行只下标为4、5、9、的比较特殊,其他I、X、C、M分别代表1、10、100、1000,而V、L、D分别代表5、50、500,在此基础上构成了各个数值,也就是说只要能判断出这些特殊的情况,就能解决问题。但是当然这道题也可以用暴力解法,把这个整数一步步分解成个、十、百、千来分别查找技能解决问题。

3.代码实现

  1. 暴力解法
class Solution {public String intToRoman(int num) {String[][] c={{"","I","II","III","IV","V","VI","VII","VIII","IX"},{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},{"","M","MM","MMM"}};StringBuffer res = new StringBuffer();int tmp= 0;res.append(c[3][num / 1000 % 10]);res.append(c[2][num / 100 % 10]);res.append(c[1][num / 10 % 10]);res.append(c[0][num % 10]);return res.toString();}
}

  1. 利用特殊数字
class Solution {public String intToRoman(int num) {StringBuffer str = new StringBuffer();    String [] symbol = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};    int [] value = {1000,900,500,400, 100, 90,  50, 40,  10, 9,   5,  4,   1};   for(int i=0;num!=0;i++){  while(num >= value[i]){//循环是为了处理重复的情况num -= value[i];  str.append(symbol[i]);  }  }  return str.toString();  }
}

转载于:https://www.cnblogs.com/chailinbo/p/7515804.html

Integer to Roman 问题相关推荐

  1. leetcode 12 ,13 Integer to Roman amp;amp;Roman to Integer 罗马与阿拉伯数组转换

    12 Integer to Roman 13 Roman to Integer 有可能不注意的结果: class Solution {public:/*1.相同的数字连写,所表示的数等于这些数字相加得 ...

  2. lintcode :Integer to Roman 整数转罗马数字

    题目 整数转罗马数字 给定一个整数,将其转换成罗马数字. 返回的结果要求在1-3999的范围内. 样例 4 -> IV 12 -> XII 21 -> XXI 99 -> XC ...

  3. LeetCode算法入门- Roman to Integer Integer to Roman -day8

    LeetCode算法入门- Roman to Integer -day8 Roman to Integer: 题目描述: Roman numerals are represented by seven ...

  4. Roman to Integer/Integer to Roman

    1 Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within ...

  5. 整数转换为罗马数字 Integer to Roman

    2019独角兽企业重金招聘Python工程师标准>>> 问题: Given an integer, convert it to a roman numeral. Input is g ...

  6. [LeetCode]Integer to Roman

    题目描述:(链接) Given an integer, convert it to a roman numeral. Input is guaranteed to be within the rang ...

  7. 【leetcode】Integer to Roman

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法-- Question :  Given an integer, convert it to a roman numeral. Input ...

  8. LeetCode 12. Integer to Roman

    题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...

  9. 【LeetCode】12. Integer to Roman 整型数转罗马数

    题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...

最新文章

  1. 运维老鸟告诉你这个经典Zookeeper问题的根因
  2. git解决代码提交冲突
  3. 利用 FC OSS 快速搭建 Serverless 实时按需图像处理服务
  4. win7完整卸载oracle11,win7安装与卸载oracle11g(32)
  5. python 数据库查询系统_python查询数据库操作系统
  6. Bootstrap 轮番插件Collapse 调用方式
  7. Spring学习总结(26)——Spring事务原理详解
  8. 张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”
  9. 梦想cad控件 android,梦想CAD控件 2018.7.26更新
  10. 配置远程jupyter notebook
  11. Silverlight常见问题解决方法
  12. 【数学建模】CUMCM-2014A 嫦娥三号软着陆过程 避障阶段图像处理
  13. 电脑桌面云便签怎么开启窗口置顶一直让悬浮便签显示在屏幕上?
  14. 树莓派2B使用360随身WiFi2代连接WiFi
  15. Kotlin:Outdated Kotlin Runtime问题修复
  16. Swap(交换函数)
  17. 金庸笔下武功最强的十人
  18. Python在数字后端中的应用(一)
  19. 线上线下模式暗藏专利风险?
  20. Unity 最近经验分享

热门文章

  1. Web Service之Soap请求响应内容中文编码解密
  2. [武道资料]《菲律宾短棍-单棍》(Edgar Sulite Lameco Escrima Single Stick)
  3. python壁纸程序代码_python设置windows桌面壁纸的实现代码
  4. datagrid分页传递参数_四类数据库分页实现方案总结之Mysql分页实现
  5. 订阅者java_RxJava:“java.lang.IllegalStateException:只允许一个订阅者!”
  6. vue php 增删改查,vue的增删改查(简单版)
  7. C++知识点54——RTTI(运行时类型识别)
  8. python里的体格是啥r_numpy.数组形状(R,1)和(R,)之间的差异
  9. this调用语句必须是构造函数中的第一个可执行语句_谈谈JavaScript中的函数构造式和new关键字...
  10. folders默认配置 shell_分布式存储Ceph RBD-Mirror灾备方案(二)镜像模式配置