罗马数字转整数
f=0b=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()后不是一个列表吗?
这个咋解决啊?
建议发下完整代码
当if each in temp:不成立时,
b为0
而set的参数需要可迭代的类型,显然0不是。 你这都发了两次求助帖了,昨天不是已经给你解决了嘛
你这个题是有什么硬性要求吗?
有什么要求就一次性说出来 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]