关关的刷题日记 43 – Leetcode 13. Roman to Integer

关关的刷题日记43 – Leetcode 13. Roman to Integer

题目

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.

题目的意思是:给定一个罗马数字,要求转化成一个整数。罗马数字的范围是1-3999之间。

思路

思路:贴出罗马数字转换表:罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。右加左减: 1 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。 2 在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字


class Solution {
public:
    int romanToInt(string s) {
        int sum=0;
        vector<int>re(s.size(),0);
        for(int i=0; i<s.size(); ++i)
        {
            switch(s[i])
            {
                case('I'):
                    re[i]=1;
                    break;
                case('V'):
                    re[i]=5;
                    break;
                case('X'):
                    re[i]=10;
                    break;
                case('L'):
                    re[i]=50;
                    break; 
                case('C'):
                    re[i]=100;
                    break;
                case('D'):
                    re[i]=500;
                    break;
                case('M'):
                    re[i]=1000;
                    break;
            }
        }
        for(int i=0; i<re.size()-1;i++)
        {
            if(re[i]<re[i+1])
                sum-=re[i];
            else
                sum+=re[i];
        }
        sum+=re[re.size()-1];
        return sum;
    }
};

人生易老,唯有陪伴最长情,加油!

以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。

图片

展开全文
相关主题
Top
微信扫码咨询专知VIP会员