Leetcode 13 -- 罗马数字转整数

题目链接如下:Leetcode 013


大致描述一下题目:

讲一个罗马数字转化成整数,题目限制数字在1-3999之间

罗马数字有如下7个字符'I','V','X','L','C','D','M',分别代表1,5,10,50,100,500,1000


解题思路:

查阅了一些资料,了解到罗马数字转化成整数的一些规则 

1. 相同数字连写n次,表示这个数字自加n次

2. 小的数字在右边,则两个数相加

3. 小的数字在左边(仅限I,X,C),则两个数相减

扫描二维码关注公众号,回复: 1144312 查看本文章

所以就判断相邻两个字符的大小关系,然后确定是相加还是相减


附上代码如下(C++):

/*******************************************************************************
Copyright © 2018-20xx Qiao Chuncheng, All Rights Reserved.
File name:		013[罗马数字转整数].cpp
Author:			Qiao Chuncheng
Version:		v1.0
Date:			2018-04-11
*******************************************************************************/
class Solution {
public:
    int RomaCharToInt(char a)
    {
        char romaCh[8] = { 'I','V','X','L','C','D','M' };
        int romaNum[8] = { 1,5,10,50,100,500,1000 };
        for (int i = 0; i < 7; i++)
        {
            if (romaCh[i] == a)
                return romaNum[i];
        }
        return -1;
    }
    
    int romanToInt(string s) {
        int sum = RomaCharToInt(s[0]);
        for (size_t i = 1; i < s.size(); i++)
        {
            int pre, cur;
            pre = RomaCharToInt(s[i - 1]);
            cur = RomaCharToInt(s[i]);
            if (cur > pre)
                sum += cur - 2 * pre;
            else
                sum += cur;
        }
        return sum;
    }
};


猜你喜欢

转载自blog.csdn.net/u010281829/article/details/80059980