整数转罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D M

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字 2 写做 II ,即为两个并列的 112 写做 XII ,即为 X + II27 写做 XXVII 即为 XX + V + II

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
示例 1:输入: 3
输出: "III"
示例 2:输入: 4
输出: "IV"
示例 3:输入: 9
输出: "IX"
示例 4:输入: 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
示例 5:输入: 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.

首先定义两个数组

String[] roman = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int[] arab = {1000,900,500,400,100,90,50,40,10,9,5,4,1};

迭代 对num除每一位的余数append对应的罗马字符的次数,依次进行下一位。
代码

  public String intToRoman(int num) {StringBuilder ans = new StringBuilder();String[] roman = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};int[] arab = {1000,900,500,400,100,90,50,40,10,9,5,4,1};int index = 0;while(num > 0){int count = num / arab[index];//把对应位append count次while(count>0){ans.append(roman[index]);count--;}//去掉当前位num%=arab[index];index ++;}return ans.toString();}

定义的两个数组13个 为常数
因此时间复杂度和空间复杂度都为O(1)

有点惨 能过就行

Leetcode

罗马数字包含以下七种字符: `I, V, X, L,C,D M`相关推荐

  1. leetcode:13、罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    一.题目:13.罗马数字包含以下七种字符: I, V, X, L,C,D 和 M.题目链接 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

  2. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  3. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  4. leetcode C++ 13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    一.C++代码: int romanToInt(string s) {int res = 0;map<char, int> mapRoman = { {'I',1},{'V',5},{'X ...

  5. C++ leetcode 12. 整数转罗马数字 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    一.C++代码: string intToRoman(int num) {map<int, char> mapRoman = { {1,'I'},{5,'V'},{10,'X'},{50, ...

  6. 罗马数字转阿拉伯数字两种实现

    记数方法 古罗马数字基本符号 基本字符 I V X L C D M 相应的阿拉伯数字表示为 1 5 10 50 100 500 1000 相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ=3 ...

  7. python 子串是否在字符串中_python七种方法判断字符串是否包含子串

    1. 使用 in 和 not in in 和 not in 在 Python 中是很常用的关键字,我们将它们归类为 成员运算符. 使用这两个成员运算符,可以很让我们很直观清晰的判断一个对象是否在另一个 ...

  8. 正则表达式强密码验证: 8-16个字符,不包含空格,必须包含数字,字母或字符至少两种

    验证需求: 8-16个字符,不包含空格,必须包含数字,字母或字符至少两种 正则表达式: /(?!.*\s)(?!^[\u4e00-\u9fa5]+$)(?!^[0-9]+$)(?!^[A-z]+$)( ...

  9. 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。 是否AC的规则如下: 1. zoj能AC; 2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;

    对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. 是否AC的规则如下: 1. zoj能AC: 2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空: ...

  10. 揭密Oracle之 七种武器

    揭密Oracle之 七种武器 第一章 搭建测试环境 vage 揭密Oracle之 七种武器  第一章 搭建测试环境 (揭密Oracle之七种武器第二章地址:DTrace语法:跟踪物理IO http:/ ...

最新文章

  1. 【CyberSecurityLearning 33】Nginx和Tomcat服务的搭建、Nginx负载均衡
  2. rhel6系统中,mysql 5.6复制新特性下主从复制配置[基于GTID]
  3. SVN系列操作(一)
  4. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005...
  5. JavaScript Math 对象
  6. 计算机网络之数据链路层:4、流量控制和可靠传输机制(停止等待协议、后退N帧协议、选择重传协议)
  7. Zookeeper常见面试题
  8. shell下将查看大文件有多少行
  9. (转)Inno Setup入门(七)——提供安装语言选项
  10. Linux学习笔记第二周第四次课(2月1日)
  11. 红帽Red Hat Linux镜像下载
  12. java项目开发教材_《Java Web开发实战》——Java工程师必备干货教材
  13. 华为p40pro手机计算机在哪里,一文看懂华为P40/P40 Pro差别在哪
  14. 【windows】bat 更改系统时间同步internet时间
  15. Windows开机小键盘灯不亮不能用
  16. JDBC :java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES) 数据库登录正常
  17. emem今天再记一道套路whalectf pwn3
  18. python字母移位_python字母移位,凯撒密码
  19. matlab计算惯性矩,梁单元有限元计算程序(matlab)
  20. 线缆选择及压降计算说明

热门文章

  1. 【你了解什么是算法设计与分析吗?】
  2. CAD分图后批量重命名图纸名称
  3. OneLedger蓄势待发,引爆跨链热点
  4. logo是啥_logo什么意思_LOGO是什么意思
  5. project sms / BSS / OSS / ESS / dianxin / youbian / iccid / puk / pin
  6. MySQL索引数据结构与算法
  7. 量子计算机旋转硬币,量子行走漫谈
  8. 电商后台管理系统——JavaWeb项目 毕业设计论文
  9. Visio绘制时间轴、日程安排图、时间进度图的方法
  10. android 手机 打印 图片,Mopria打印PDF、TXT文档或图片(适用于Android安卓系统)