首页 > 技术文章 > leetcode-罗马数字转整数

Acezhang 2021-01-31 20:56 原文

数字与符号对应关系的存储:

hashmap()映射产生的时间空间代价都要更大,switch..case..效率更高

switch(c){  
		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;

    }

首先判断:
左小于右:做加法
右小于左:做减法

public int romanToInt(String s) {

    int res=0;

    int preNum=getValue(s.charAt(0));//字符串转字符型调用charAt(),s[i]是string型,不是char型。

    for(int i=1;i<s.length();i++){ //计算字符串的长度要调用length()函数

        int num=getValue(s.charAt(i))

        if(preNum<num) 

            res-=preNum;

        else{

            res+=preNum;

        }

        preNum=num;

    }

    res+=preNum;//加入下一个字符

    return res;

}

推荐阅读