罗马数字包含以下七种字符:I, V, X, LCD 和 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 到 3999 的范围内。

示例 1:

输入: "III"
输出: 3

示例 2:

输入: "IV"
输出: 4

示例 3:

输入: "IX"
输出: 9

示例 4:

输入: "LVIII"
输出: 58
解释: C = 100, L = 50, XXX = 30, III = 3.

示例 5:

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

解题思路:

把罗马数字的几个英文放进一个map里,对应的值为

a['I'] = 1;  
        a['V'] = 5;  
        a['X'] = 10;  
        a['C'] = 100;  
        a['M'] = 1000;  
        a['L'] = 50;  
        a['D'] = 500;

遍历整个字符串,设置两个相邻指针,如果前面>后面或者是最后一个,就吧对应的数值加起来,否则减去对应的数值。

代码:

import java.util.Scanner;public class 罗马数字转换 {public static void main(String[] args) {// TODO 自动生成的方法存根Scanner input = new Scanner(System.in);String s = input.next();int[] a = new int[256];a['I'] = 1;  a['V'] = 5;  a['X'] = 10;  a['C'] = 100;  a['M'] = 1000;  a['L'] = 50;  a['D'] = 500; int val = 0;for (int i = 0; i < s.length(); i++) {//如果是最后一个字符,或者前一个大于后面的,就加,否则减if (i == s.length() - 1 || a[s.charAt(i+1)] <= a[s.charAt(i)]) {val += a[s.charAt(i)];}else {val -= a[s.charAt(i)];}}System.out.println(val);}}

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

  1. 汉语数字或罗马数字转化为阿拉伯数字:例如:一百二十三为123、III为3

    汉语数字转化为阿拉伯数字 方式一:得到结果集然后进行遍历 运行结果展示 方式二:结果集一直变化中 运行结果展示 罗马数字转化为阿拉伯数字 运行结果展示 方式一:得到结果集然后进行遍历 public s ...

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

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

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

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

  4. 罗马数字和阿拉伯数字互转(源码)

    罗马数字和阿拉伯数字互转(源码) 将下面源码全部复制下来直接粘贴到html页面试一下,代码还有许多需要改进的地方,请各位大神多多指点,谢谢! <!DOCTYPE html> <htm ...

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

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

  6. java输出罗马数字_Java实现的求解经典罗马数字和阿拉伯数字相互转换问题示例...

    本文实例讲述了Java实现的求解经典罗马数字和阿拉伯数字相互转换问题.分享给大家供大家参考,具体如下: 古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来 ...

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

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

  8. 罗马数字与阿拉伯数字互转

    来源于 LeetCode Roman to Integer 描述: Given a roman numeral, convert it to an integer. Input is guarante ...

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

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

  10. 经典题:罗马数字和阿拉伯数字的相互转换

    package Linkedin;public class RomeToArabic {public static void main(String[] args) {String s = " ...

最新文章

  1. shell快速将同一名称的不同类型文件自动划分到一个文件中
  2. 十大笔记本品牌型号命名规则【联想】
  3. vmware tools 的安装(Read-only file system 的解决)
  4. 熊猫merge()–合并两个DataFrame对象
  5. Jmockit单元测试MockUp调用原始方法
  6. myBatis --(3)数据的增删改查
  7. WebStorage篇
  8. json字符串转json对象
  9. PaddleNLP基于ERNIR3.0文本分类以CAIL2018-SMALL数据集罪名预测任务为例【多标签】
  10. Borůvka算法与异或生成树
  11. MTK 6737 Flash配置
  12. XRecycleView (Scrapped or attached views may not be recycled)
  13. Ubuntu 20.04安装CUDA失败导致系统黑屏消息nvidia 0000:01:00.0: can‘t change power state from D3cold to D0 的解决方法
  14. coco数据集大小分类_COCO数据集使用
  15. Python利用马青公式计算圆周率Π并写入文件
  16. 2020—开发记录以及知识总结,持续更新
  17. 2021考生如何做考博英语复习规划?
  18. 2016阿里安全峰会(附峰会议题一览表)
  19. DocuWare 文件管理与工作流程自动化案例研究——DocuWare 工作流程功能使在家工作的员工能够保持沟通和高效工作,支持混合环境
  20. android手机舆情分析,基于Android移动互联网舆情管理关键技术研究

热门文章

  1. 新生报到系统_中大深圳校区欢迎你!5个院系1271名本科新生报到
  2. 三角函数及其之间的关系
  3. 一个普通人的震后十年
  4. 大学生就业观念的调查与分析
  5. PS人像磨皮——高低频修图法
  6. 大数据和数据挖掘之间,主要有什么关系?
  7. dos攻击防范 php,DOS攻击和DDOS攻击的区别
  8. html根据出生日期计算星座,星座测算.html
  9. 电脑首次插入耳机有声音,再次插入没有声音
  10. Office—OneNote快捷键操作