栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode13——罗马数字转整数(JAVA)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode13——罗马数字转整数(JAVA)

LeetCode题解(JAVA)

LeetCode13——罗马数字转整数
  • LeetCode题解(JAVA)
  • 题目描述
  • 思路
  • 代码实现


题目描述


思路

注意几种特殊情况的判断:

//4, 9
IV,IX
//40, 90
XL,XC
//400, 900
CD,CM

其余的字母都有对应的整数值。
以58为例: 通过罗马字母规则来得到相加为58的各个整数。
58 = 50 + 8 = 50 + 5 + 3 = 50 + 5 + 1 + 1 + 1
因此,58对应的罗马字母为
L + V + I + I + I = LVIII

代码实现
class Solution {
    public int romanToInt(String s) {
        int len = s.length();
        int roman_int = 0;
        for(int i = 0;i
        //规定单个罗马字母对应的整数值。
            switch(s.charAt(i)){
            case 'I' : roman_int = roman_int + 1;break;
			case 'V' : roman_int = roman_int + 5;break;
			case 'X' : roman_int = roman_int + 10;break;
			case 'L' : roman_int = roman_int + 50;break;
			case 'C' : roman_int = roman_int + 100;break;
			case 'D' : roman_int = roman_int + 500;break;
			case 'M' : roman_int = roman_int + 1000;break;
			default: System.out.println("default");break;   
            }
			//当输入由多个罗马字母构成时,讨论他们的情况
            if(i != 0){
            	//IV = 4, IX = 9
            	//当V的左边为I,或者X的左边为I的情况
            	
                if(((s.charAt(i)=='V')||(s.charAt(i)=='X'))&&(s.charAt(i-1)=='I')){
                    //重复用了两次I,所以乘以2
                    roman_int = roman_int-1*2;
                }
                //同理,XL = 40, XC = 90
                if(((s.charAt(i)=='L')||(s.charAt(i)=='C'))&&(s.charAt(i-1)=='X')){
                    roman_int = roman_int-10*2;
                }	
                //CM = 400, DM = 900
				if(((s.charAt(i)=='D')||(s.charAt(i)=='M'))&&(s.charAt(i-1)=='C')){
                    roman_int = roman_int-100*2;
                }		
            }
        }
        return roman_int;
    }
}

提交代码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/891758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号