鱼C论坛

 找回密码
 立即注册
查看: 2038|回复: 4

罗马数字转整数

[复制链接]
发表于 2020-11-26 23:14:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        f=0
        b=0
        number_dict={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        special_one = {'IV': 4, 'IX': 9, 'XL': 40, 'XC': 90, 'CD': 400, 'CM': 900}
        #特殊的六种情况
        temp=s
        for each in special_one:
            if each in temp:
                f+=special_one.get(each)
                b=temp.replace(each,'')

        for i in set(b):
            A = b.count(i)
            f += A* number_dict.get(i)
        return f
他现在给我报错了 说红色这句话 ‘int’对象不可迭代,但我寻思set()后不是一个列表吗?
这个咋解决啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-26 23:16:06 | 显示全部楼层


建议发下完整代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 23:24:39 | 显示全部楼层
当if each in temp:不成立时,
b为0
而set的参数需要可迭代的类型,显然0不是。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-27 09:11:38 | 显示全部楼层
你这都发了两次求助帖了,昨天不是已经给你解决了嘛
你这个题是有什么硬性要求吗?
有什么要求就一次性说出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-27 10:25:47 | 显示全部楼层
class Solution {
public:
    int romanToInt(string s) {
        vector<int> T;
        int sum = 0;
        for(int i = 0; i < s.length(); i++)
        {
            switch(s[i])
            {
                case 'I':
                    T.push_back(1);
                    break;
                case 'V':
                    T.push_back(5);
                    break;
                case 'X':
                    T.push_back(10);
                    break;
                case 'L':
                    T.push_back(50);
                    break;
                case 'C':
                    T.push_back(100);
                    break;
                case 'D':
                    T.push_back(500);
                    break; 
                case 'M':
                    T.push_back(1000);
                    break;
            }
        }
        if(T.size() == 1)
            return T[0];
        for(int i = 0; i < T.size()-1; i++)
        {
            if(T[i] < T[i+1])
            {
                sum -= T[i];
                sum += T[i+1];
                i++;
            }
            else
                sum += T[i];
        }
        if(T.size() >= 2 && T[T.size()-2] >= T[T.size()-1])
            sum += T[T.size()-1];
        return sum;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表