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

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做  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:

输入: s = "III"
输出: 3
示例 2:

输入: s = "IV"
输出: 4
示例 3:

输入: s = "IX"
输出: 9
示例 4:

输入: s = "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:

输入: s = "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

提示:

1 <= s.length <= 15
s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')
题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内
题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。
关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

---------------------------------------------------------------------------------------------------------------------------

java代码:

class Solution {

public int romanToInt(String s) {

s=s.replace("IV","a");

s=s.replace("IX","b");

s=s.replace("XL","c");

s=s.replace("IC","d");

s=s.replace("CD","e");

s=s.replace("IM","f");

int nums=0;

for( int i=0;i<s.length();i++){

nums+=getValue(s.charAt(i));

}

return nums;

}

public int getValue(char c){

switch( c){

case 'I': return 1;

case 'V': return 5;

case 'X': return 10;

case 'L': return 50;

case 'C': return 100;

case 'D': return 500;

case 'M': return 1000;

case 'a': return 4;

case 'b': return 9;

case 'c': return 40;

case 'd': return 90;

case 'e': return 400;

case 'f': return 900;

}

return 0;

}

}

解题思路并不难首先将罗马字符转换数字而在特殊数组合上加以替代,然后从左往右进行累加即可。

replace()函数:可将字符串的字符进行替换

length()函数:可获取字符串长度

charAt(i)函数:可以获取位置i上的字符

注意在getValue()函数中要有返回值return 0;

罗马数字转换阿拉伯数字相关推荐

  1. 罗马数字转换阿拉伯数字(Java版,考虑较为全面)

    一. 前言 朋友的作业,本想在网上找个现成的改改就行啦.可是一番google.baidu之后,找到的要么不是Java版本的,要么就是考虑的不够全面.遂,笔者自己写了个,如有考虑不全面的地方,望大家能够 ...

  2. python罗马数字转换阿拉伯数字_20202427-张启辰《Python3初学:罗马数字转阿拉伯数字》...

    20202427-张启辰<Python3初学:罗马数字转阿拉伯数字> 1.规则 罗马数字是古罗马使用的一种记数系统,在阿拉伯数字传入之前使用较为普遍,目前大家可能在钟表.日历.文章的排序 ...

  3. python罗马数字转换阿拉伯数字_Python将阿拉伯数字转换为罗马数字的方法

    本文实例讲述了Python将阿拉伯数字转换为罗马数字的方法.分享给大家供大家参考.具体实现方法如下: def numToRomanNum(Num): """digital ...

  4. 罗马数字转换阿拉伯数字0~3999

    这个题首先要知道的转换的规则,百度处了两条: 有两条须注意掌握: 1.基本数字 Ⅰ.X .C 中的任何一个.自身连用构成数目.或者放在大数的右边连用构成数目.都不能超过三个:放在大数的左边只能用一个: ...

  5. 罗马java_罗马数字转换阿拉伯数字(Java版,考虑较为全面)

    一. 前言 朋友的作业,本想在网上找个现成的改改就行啦.可是一番google.baidu之后,找到的要么不是Java版本的,要么就是考虑的不够全面.遂,笔者自己写了个,如有考虑不全面的地方,望大家能够 ...

  6. 罗马数字转换成数字java_C趣味编程百例(31)将阿拉伯数字转换为罗马数字

    95.将阿拉伯数字转换为罗马数字 将大于0小于1000的阿拉伯数字转换为罗马数字.阿拉伯数字与罗马数字的对应关系如下: *问题分析与算法设计 题目中给出了阿拉伯数字与罗马数字的对应关系,题中的数字转换 ...

  7. 罗马数字转换成阿拉伯数字

    罗马数字转换成阿拉伯数字 Roman to integer 给出一个罗马数字(字符串),返回此数字的阿拉伯数字(int) Given a roman numeral, convert it to an ...

  8. 【C++】将罗马数字转换成阿拉伯数字

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

  9. 罗马数字与阿拉伯数字的相互转换

      最近遇到一道非常有趣的题目,题目大意如下:有一个富翁在银河系里做生意,而银河系使用的是罗马数字,所以他需要一个精明能干的助手,帮助他完成罗马数字与阿拉伯数字的相互转换,题目在这个背景下衍生出交易场 ...

  10. python判断输入的是否为数字_python怎么判断是否为数字 将罗马数字转为阿拉伯数字,用python解...

    将阿拉伯数字转为罗马数字,用python解 class Solution(object): def intToRoman(self, num): """ :type nu ...

最新文章

  1. etcd 集群运维实践
  2. 国家开放大学2021春1378管理英语3题目
  3. FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
  4. Spring 注解方式实现 事务管理
  5. redhad6.4 配置在线yum源
  6. URL编码 URLEncoder 示例
  7. bzoj 1085: [SCOI2005]骑士精神(IDA*)
  8. 上传服务器响应失败,Django CKEditor 上传图片提示“不正确的服务器响应”的解决办法...
  9. 如何用自己的笔记本电脑使用学校机房的千兆校园网
  10. SM3算法 (python)
  11. 计算机的ps快捷键,ps快捷键常用表
  12. 解决微信网页授权:出现errcode:40163
  13. 经典基础教程---Programming TCP/IP Windows Sockets in C++
  14. 固高运动卡的使用 5 插补运动模式之-直线插补运动
  15. 微信小程序开发之——婚礼邀请函-项目展示(4.1)
  16. sefan ru java games_Java Pinyin.se4方法代码示例
  17. 什么是cve什么是cwe_什么是CVE 2020 0601又名Curveball,为何如此危险
  18. u盘插上去计算机没有,正常U盘插入电脑没反应?u盘插上没反应的绝对有效解决方法-太平洋电脑网...
  19. Linux 基础入门 02
  20. 职高计算机工作总结范文,职高学习工作总结范文2000字

热门文章

  1. 服务器进pe iso安装系统教程,iso系统怎么安装( pe怎么安装iso原版镜像)
  2. png格式的图片怎么变成jpg格式?png图片怎么转格式?
  3. 停车场管理系统 课程设计 C语言
  4. 总结几个有关国家行政区划的问题
  5. OpenWrt 18.06.1的ss-redir, 以及在乐视超4 X40上看Youtube
  6. Flutter入门进阶之旅(六)Layout Widget
  7. 有两个水桶,一个可装7升水,一个装水3升,怎样量出2升
  8. JAVA实现发短信功能
  9. PS人像磨皮——高低频修图法
  10. 【C语言】求最大公约数和最小公倍数