JAVA解法
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;
}
}
}
leetcode原题: 13. 罗马数字转整数
评论区