LeetCode(13) RomanToInteger

方法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;
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值