**思路: 第一步,声明一个数组用来存放罗马数字的组成的每个字母; 第二步,声明一个数组来存储罗马字母对应的整数的数值要一一对应; 第三步,因为罗马数字的组成有6中特殊形式所以,通过字符串方法中的replace()方法将这六种特殊的形式用任意字母进行替换; 第四步,通过字符串转字符数组即toCharArray()方法将要转换的字符串转变成字符数组这样方便比较; 第五步, 通过循环嵌套分别遍历两个数组进行转化 **
class Solution {
public int romanToInt(String s) {
s = s.replace("IV","c");
s = s.replace("IX","h");
s = s.replace("XL","e");
s = s.replace("XC","n");
s = s.replace("CD","q");
s = s.replace("CM","i");
int newSum = 0;
char[] romen = {'I','V','X','L','C','D','M','c','h','e','n','q','i'};
int[] value = {1,5,10,50,100,500,1000,4,9,40,90,400,900};
char[] newArray = s.toCharArray();
for(int i = 0;i < newArray.length;i ++){
for(int j = 0;j < romen.length;j ++){
if(newArray[i] == romen[j]){
newSum += value[j];
break;
}
}
}
return newSum;
}
}
|