leetcode-罗马数字转整数
数字与符号对应关系的存储:
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;
}