• 【LeetCode 13】罗马数字转整数


    题目链接

    【题解】

    就是上一题反过来的过程。 因为有说一般情况下后面的罗马数字是小于前面的罗马数字的。 如果前面的罗马数字小于后面的罗马数字了。 说明出现了4,9,40,90这些特殊情况。 那么就得判断一下下了。 直接用map把所有的罗马数字对应的数字都放进去。 然后就很好做啦。 写的时候遇到一个问题。 就是string temp = 一个char类型+另外一个char类型变量。 会出错。。。 得这么写 string temp=""; temp+=charA; temp+=charB;

    【代码】

    class Solution {
    public:
        int romanToInt(string s) {
            map<string,int> dic;
            dic.clear();
            int nums[]={1,4,5,9,10,40,50,90,100,400,500,900,1000};
            string roma[]={"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
            for (int i = 0;i < 13;i++) dic[roma[i]] = nums[i];
            int len = s.size();
            int ans = 0;
            for (int i = 0;i < len;i++){
                string chara = "";string charb = "";
                chara+=s[i];
                if (i<len-1) charb +=s[i+1];
                if (i<len-1 && dic[chara]<dic[charb]){
                    string temp = "";
                    temp+=chara;temp+=charb;
                    ans = ans + dic[temp];
                    i++;
                }else ans+=dic[chara];
            }
            return ans;
        }
    };
    
  • 相关阅读:
    MySQL主从配置
    MySQL操作
    初识数据库
    Session对象以及其常用的方法
    请求重定向与请求转发的区别
    JSP respone常用方法
    解决JSP url传值中文乱码问题
    JSP request 对象
    JSP 内置对象get 和 post的区别
    jsp out对象
  • 原文地址:https://www.cnblogs.com/AWCXV/p/11802551.html
Copyright © 2020-2023  润新知