题目:
解法一思路:
- 先把罗马数字转化为整数
- 判断条件:
- 正常:罗马数字中小的数字在右边,则直接做加法运算。
- 特例:罗马数字中大的数字若在右边的话,则需做减法运算。
- 所以,通过遍历往后看一位,判断是做加法运算还是减法运算。
class Solution {
public int romanToInt(String s) {
int sum = 0;
int pre = getValue(s.charAt(0));
for(int i=1; i<s.length();i++){
int num = getValue(s.charAt(i));
if(pre<num){
sum -= pre;
}else{
sum += pre;
}
pre = num;
}
sum += pre; //与最后一位做加法运算
return sum;
}
public 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;
default:return 0;
}
}
}
参考作者:donespeak 来源:力扣(LeetCode)
注意:
测试时,在输入需要转化为数字的罗马数字时,应当要考虑题目给出的特殊规则。
在解题的道路不断挣扎…