方法1:(弄错了两个len,下回要小心)
class Solution {
public:
int romanToInt(string s) {
char tmpchar[]={'I','V','X','L','C','D','M'};
int tmpint[]={1,5,10,50,100,500,1000};
map<char,int> tmp;
int sum=0;
int len=s.length();
int maplen=sizeof(tmpchar)/sizeof(char);
for(int i=0;i<=maplen-1;i++) tmp.insert(pair<char,int>(tmpchar[i],tmpint[i]));
for(int i=0;i<len-1;i++)
{
if(tmp[s[i]]>=tmp[s[i+1]]) sum+=tmp[s[i]];
else sum-=tmp[s[i]];
}
sum+=tmp[s[len-1]];
return sum;
}
};
方法2:
int romanToInt(char* s) {
int i=0, sum=0, length= strlen(s);
for(i=0;i<=length;i++)
{
if(s[i]=='M')
{sum=sum+1000;
if(s[i-1]=='C') /* CM is 100+1000-200 in the order of iterations*/
sum=sum-200;}
if(s[i]=='D')
{sum=sum+500;
if(s[i-1]=='C')
sum=sum-200;}
if(s[i]=='C')
{sum=sum+100;
if(s[i-1]=='X')
sum=sum-20;}
if(s[i]=='L')
{sum=sum+50;
if(s[i-1]=='X')
sum=sum-20;}
if(s[i]=='X')
{sum=sum+10;
if(s[i-1]=='I')
sum=sum-2;}
if(s[i]=='V')
{sum=sum+5;
if(s[i-1]=='I')
sum=sum-2;} /* IV is 1+5-2 */
if(s[i]=='I')
{sum=sum+1;}
}
return sum;
}