贾雨村 发表于 2020-11-26 23:14:14

罗马数字转整数

        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()后不是一个列表吗?
这个咋解决啊?

Twilight6 发表于 2020-11-26 23:16:06



建议发下完整代码

冬雪雪冬 发表于 2020-11-26 23:24:39

当if each in temp:不成立时,
b为0
而set的参数需要可迭代的类型,显然0不是。

jtxs0000 发表于 2020-11-27 09:11:38

你这都发了两次求助帖了,昨天不是已经给你解决了嘛
你这个题是有什么硬性要求吗?
有什么要求就一次性说出来

风过无痕1989 发表于 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)
            {
                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;
      for(int i = 0; i < T.size()-1; i++)
      {
            if(T < T)
            {
                sum -= T;
                sum += T;
                i++;
            }
            else
                sum += T;
      }
      if(T.size() >= 2 && T >= T)
            sum += T;
      return sum;
    }
}
页: [1]
查看完整版本: 罗马数字转整数