方法一:
算法思路:
1.罗马数字以String类型传入的,那么考虑到String类型有没有相应的方法,可以得到单个字符。
charAt:获取某索引处的字符;
2.然后来分析怎样来识别IV,III这种格式的数字,通过观察发现,左边的比右边的大就可以直接相加,右边的比左边大,就要相减;
3.写出一个方法getNumber(),用来通过单个罗马字符来获取它的数字。在主函数里面,设置一个flag变量,把0处的字符传给他,在循环里依次遍历,从1开始,判断与左右的大小关系,用变量sum来计算总和。然后将flag的值后移,继续循环。
代码实现:
import java.util.*;
class Solution {
public int romanToInt(String s) {
int sum = 0;
int flag = getNumber(s.charAt(0));
for(int i = 1; i < s.length; i++){
int n = getNumber(s.charAt(i));
if(flag > n){
sum += n;
}else{
sum -= n;
}
flag = n;
}
sum += flag;
return sum;
}
public int getNumber(String nn){
switch(nn){
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;
}
}
}