T13. Roman to Integer【Easy】
题目
给一个罗马数字,将其转换为整数。
输入范围:1~3999
思路
① 了解罗马字的规则
② 了解switch用法
③ 看代码就好,写了一些注释应该没什么难度的
代码
代码取自 Top Solution,稍作注释
这是一段很容易理解的代码~
public class Solution {
public int romanToInt(String s) {
int nums[]=new int[s.length()];
for(int i=0;i<s.length();i++){
//s.charAt(i)指得到第i+1个字符
switch (s.charAt(i)){
//通过case得到字符对应的数字,并存入nums数组中
case 'M':
nums[i]=1000;
break;
case 'D':
nums[i]=500;
break;
case 'C':
nums[i]=100;
break;
case 'L':
nums[i]=50;
break;
case 'X' :
nums[i]=10;
break;
case 'V':
nums[i]=5;
break;
case 'I':
nums[i]=1;
break;
}
}
int sum=0;
for(int i=0;i<nums.length-1;i++){
/*关键!罗马字的规则是低级字符在高级字符(设V比I高级这样)
*左边的是减,右边是加,所以这样比较就是左和右边比字符是
*否高级(越大越高级),然后根据规则加减
*/
if(nums[i]<nums[i+1])
sum-=nums[i];
else
sum+=nums[i];
}
return sum+nums[nums.length-1];
}
补充
前一篇文章写得是整数转罗马字,可以一起看看~
然后就补充一下罗马字符好啦~主要是方便大家找,下面是链接: