https://leetcode.com/problems/roman-to-integer/
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000
For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, which is simply X + II. The number twenty seven is written as XXVII, which is XX + V + II.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:
Ican be placed beforeV(5) andX(10) to make 4 and 9.Xcan be placed beforeL(50) andC(100) to make 40 and 90.Ccan be placed beforeD(500) andM(1000) to make 400 and 900.
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.
Example 1:
Input: "III" Output: 3
Example 2:
Input: "IV" Output: 4
Example 3:
Input: "IX" Output: 9
Example 4:
Input: "LVIII" Output: 58 Explanation: L = 50, V= 5, III = 3.
Example 5:
Input: "MCMXCIV" Output: 1994 Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
AC code
class Solution {
public int romanToInt(String s) {
int sum=0;
for(int i=0;i<s.length();i++) {
char ch=s.charAt(i);
if(i==s.length()-1) {
if(ch=='I')
sum+=1;
else if(ch=='V')
sum+=5;
else if(ch=='X')
sum+=10;
else if(ch=='L')
sum+=50;
else if(ch=='C')
sum+=100;
else if(ch=='D')
sum+=500;
else if(ch=='M')
sum+=1000;
}else {
char ch2=s.charAt(i+1);
if(ch=='I'&&ch2=='V') {
sum+=4;
i++;
continue;
}
if(ch=='I'&&ch2=='X') {
sum+=9;
i++;
continue;
}
if(ch=='X'&&ch2=='L') {
sum+=40;
i++;
continue;
}
if(ch=='X'&&ch2=='C') {
sum+=90;
i++;
continue;
}
if(ch=='C'&&ch2=='D') {
sum+=400;
i++;
continue;
}
if(ch=='C'&&ch2=='M') {
sum+=900;
i++;
continue;
}
if(ch=='I')
sum+=1;
else if(ch=='V')
sum+=5;
else if(ch=='X')
sum+=10;
else if(ch=='L')
sum+=50;
else if(ch=='C')
sum+=100;
else if(ch=='D')
sum+=500;
else if(ch=='M')
sum+=1000;
}
}
return sum;
}
}
罗马数字转整数算法
本文介绍了一种将罗马数字转换为整数的算法实现,详细解析了罗马数字的构成规则,包括特殊情况的处理,如IV表示4,IX表示9等。通过遍历输入的罗马数字字符串,算法能够正确识别并计算出对应的整数值。
6754

被折叠的 条评论
为什么被折叠?



