JAVA Roman to Integer 罗马数转换为int型方法

原题:

13Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.


罗马数字个位到千位表示方法:

'I','V','X','L','C','D','M'  分别为:1,5,10,50,100,500,1000

对于一个罗马数的字符串,我们只需要用字符串的charAt(int index)方法,对它的每一个数进行判断,总和相加,要注意的是,每逢IV,IX。XL,XC,CD,CM这些数不能直接读取,要判断他们的前一位是否为对应得字符,处理后相加像,这里给出判断方法:

if (i>0&&s.charAt(i-1)=='I') {

result=result+3;
}
       else {
       result=result+5;

}

比较的是IV这个罗马数。

整个代码如下:

 public int romanToInt(String s) {
      int result=0;
      
      for (int i = 0; i < s.length(); i++) {
char tail=s.charAt(i);
switch (tail) {
case 'I':result=result+1;
break;
            case 'V':if (i>0&&s.charAt(i-1)=='I') {
result=result+3;
}
                     else {
                    result=result+5;
}
            break;
            case 'X':
            if (i>0&&s.charAt(i-1)=='I') {
result=result+8;
}
                 else {
                result=result+10;
}
            break;
            case 'L':
            if (i>0&&s.charAt(i-1)=='X') {
result=result+30;
}
                 else {
                result=result+50;
}
            break;
            case 'C':
            if (i>0&&s.charAt(i-1)=='X') {
result=result+80;
}
                 else {
                result=result+100;
}
            break;
            case 'D':
            if (i>0&&s.charAt(i-1)=='C') {
result=result+300;
}
                 else {
                result=result+500;
}
            break;
            case 'M':
            if (i>0&&s.charAt(i-1)=='C') {
result=result+800;
}
                 else {
                result=result+1000;
}
            break;
default:
break;

}
}
      return result;

    }


最后运行结果:

LeetCode提交结果展示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值