#13 Roman to Integer
罗马数恢复成整数。其实就是把几个特例写出来就可以,否则就加上去。注意因为遇到了I就+1,因此判断其后若跟着IV,则再+3而不是+4,其他同理。
class Solution {
public:
int romanToInt(string s) {
if(s.size()==0) return 0;
int number=0;
char sElement;
for(int i=0;i<s.size();i++)
{
sElement=s[i];
switch(sElement){
case 'I' :
number+=1;
if (i+1<s.size()&&s[i+1]=='V') {
number+=3; //因为上面有+1了,这里就+3得到IV;下面相同。
i++;
}
if(i+1<s.size()&&s[i+1]=='X') {
number+=8;
i++;
}
break;
case 'V':
number+=5;
break;
case 'X':
number+=10;
if (i+1<s.size()&&s[i+1]=='L') {
number+=30;
i++;
}
if(i+1<s.size()&&s[i+1]=='C') {
number+=80;
i++;
}
break;
case 'L':
number+=50;
break;
case 'C':
number+=100;
if (i+1<s.size()&&s[i+1]=='D') {
number+=300;
i++;
}
if(i+1<s.size()&&s[i+1]=='M') {
number+=800;
i++;
}
break;
case 'D':
number+=500;
break;
case 'M':
number+=1000;
break;
default:
break;
}
}
return number;
}
};