题目:

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

示例 1:输入: "III"
输出: 3
示例 2:输入: "IV"
输出: 4
示例 3:输入: "IX"
输出: 9
示例 4:输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:输入: "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 。

来源:力扣(LeetCode)

解法:

首先把一些特例用一个英文字母代替
然后将字符串转成char数组进行遍历,将每个字符对应的数字相加即得到结果

public static int romanToInt(String s) {//将特例转换成字母代替s = s.replace("IV","a");s = s.replace("IX","b");s = s.replace("XL","c");s = s.replace("XC","d");s = s.replace("CD","e");s = s.replace("CM","f");//遍历char[] chars = s.toCharArray();int res = 0;for (char c : chars) {res += getValue(c);}return res;}//将每个特列的转换为数字public static 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;}

Java每日算法--罗马数字包含以下七种字符: 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. Java 并发编程必须知道的七种锁类型以及应用

    锁是解决并发冲突的重要工具.在开发中我们会用到很多类型的锁,每种锁都有其自身的特点和适用范围. 需要深刻理解锁的理念和区别,才能正确.合理地使用锁. 常用锁类型 乐观锁与悲观锁 悲观锁对并发冲突持悲观 ...

  7. java排序算法代码_Java实现八种排序算法(代码详细解释)

    package八大排序算法;importjava.util.Arrays;importorg.junit.Test;/*** 1.插入排序 直接插入排序.希尔排序 折半插入排序 * 2.交换排序 冒泡 ...

  8. Java算法罗马数字转整数

    本文章只提供算法. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X         ...

  9. 算法 罗马数字转整数

    算法 罗马数字转整数 1.题目 2.方法 2.1枚举法(没得办法) 2.2map(大神级别) 1.题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 ...

  10. 【LeetCode】【Java】13. 罗马数字转整数——给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

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

最新文章

  1. 新手探索NLP(十一)——知识图谱
  2. python 爬虫代理
  3. 误区30日谈16-20
  4. linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录
  5. 基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)
  6. 记一次mysql进程无法启动的解决方案
  7. windows模拟微信小程序_Windows 版微信新版本内测!小程序可以直接添加到电脑桌面了...
  8. python进阶21之actor
  9. 制造业数据分析存在哪些问题
  10. setsockopt用法详解
  11. linux中date命令y与Y区别,Linux命令之date
  12. 2018-11-18站立会议内容
  13. Python3 AES加解密(AES/ECB/PKCS5Padding)
  14. AUTOCAD参数约束功能
  15. Job for network.service failed because the control process exited with error code. See “systemctl st
  16. 手机淘宝自动加好友及聊天实现
  17. python画五角星代码_Python GUI 编程tkinter--画五角星和简单的动画制作
  18. 如何判断JS中两个对象是否相等?
  19. 织梦 帝国 php,PHPCMS、织梦DEDECMS、帝国CMS的抉择与比较
  20. Git详解之七:自定义Git

热门文章

  1. php生成服务器证书pfx,使用PHP使用.pfx证书签署XML文件
  2. eui怎么在名字后面显示服务器,怀旧服EUI怎么调姓名版 设置血条的方法
  3. 基于javaweb企业合同管理系统
  4. Debian 9 Stretch国内常用镜像源 Jason-张百万
  5. ZOJ3549 Little Keng(快速幂)
  6. QT 错误:Unable to create a debugging engine解决
  7. HDU-6438丨优先队列
  8. 用hc05蓝牙模块,开发了几个安卓app了,越来越熟悉蓝牙app了。
  9. 面板数据熵值法计算综合指数Stata代码(附样本数据和结果)
  10. OpenGauss/MogDB调用C FUNCTION 范例