leetcode Roman to Integer

主要思路就是如果每两个字符进行一次判断,如果左边的字符所代表的字符小于右边的字符,则返回右边-左边的值。

要注意最后一个字符特殊处理,因为可能溢出。

//

//  main.cpp

//  Integer to Roman

//

//  Created by zhukunjie on 14-7-8.

//  Copyright (c) 2014 zhukunjie. All rights reserved.

//


#include <iostream>

using namespace std;

inline int map(const char c)

{

    switch (c) {

        case 'I':return 1;break;

        case 'V':return 5;break;

        case  'X': return 10;break;

        case 'L': return 50;break;

        case 'C': return 100;break;

        case 'D': return 500;break;

        case 'M': return 1000;break;

        default:return 0;break;

    }

    

}

 int romanToInt(string s)  {

     

     int res=0;

     for(int i=0;i<s.length();i++)

     {

         if (i==(s.length()-1)) {

             res+=map(s[i]);

         }

         else{

         if (map(s[i])<map(s[i+1]))

            {res+=map(s[i+1])-map(s[i]);i++;}

             else res+=map(s[i]);

         }

     }

     return res;

}

int main(int argc, const char * argv[])

{


    // insert code here...

    std::cout << romanToInt("IX");

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值