13.罗马数字转整数Java版,每日一题系列

编程入门 行业动态 更新时间:2024-10-25 04:21:08

13.<a href=https://www.elefans.com/category/jswz/34/1728649.html style=罗马数字转整数Java版,每日一题系列"/>

13.罗马数字转整数Java版,每日一题系列

13.罗马数字转整数Java版,每日一题系列(此题来自力扣网)

罗马数字包含以下七种字符: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.

代码

import java.util.*;class Solution {public int romanToInt(String s) {int sum = 0;int preNum = getValue(s.charAt(0));for(int i = 1;i < s.length(); i ++) {int num = getValue(s.charAt(i));if(preNum < num) {sum -= preNum;} else {sum += preNum;}preNum = num;}sum += preNum;return sum;}private int getValue(char ch) {switch(ch) {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;default: return 0;}}
}

作者:donespeak
链接:/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

更多推荐

13.罗马数字转整数Java版,每日一题系列

本文发布于:2024-02-12 08:25:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1686953.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:罗马数字   整数   系列   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!