这是来自HackerRank的问题
您将获得两套A
和B
。
您的工作是查找集A
是否为集B
的子集。
如果设置A
是set B
的子集,则打印为True。
如果设置A
不是set B
的子集,则打印False。
输入格式:
第一行将包含测试用例T
的数量。
每个测试用例的第一行包含集合A
中的元素数。
每个测试用例的第二行包含set A
的空格分隔元素。
每个测试用例的第三行包含集合B
中的元素数。
每个测试用例的第四行包含空格分隔的集合B
。
输出格式:
在不同的行上为每个测试用例输出True或False。
示例输入:
3
5
1 2 3 5 6
9
9 8 5 6 3 2 1 4 7
1
2
5
3 6 5 4 1
7
1 2 3 5 6 8 9
3
9 8 2
示例输出:
True
False
False
我对此编码并且工作正常。输出和预期输出匹配,但输出声称是错误的。我甚至检查是否是因为任何尾随的空白字符。我哪里错了?
for i in range(int(raw_input())):
a = int(raw_input()); A = set(raw_input().split())
b = int(raw_input()); B = set(raw_input().split())
if(b<a):
print "False"
else:
print A.issubset(B)
答案 0 :(得分:1)
问题规范说明了这一点:
注意:超过4行将得分为零。空白行不会被计算在内。
您的解决方案使用7行,因此将其视为失败。
答案 1 :(得分:0)
在Python-3中 ## Hackerrank ## ##检查子集##
for i in range(int(input())):
a = int(input())
A = set(input().split())
b = int(input())
B = set(input().split())
print(A <= B)
答案 2 :(得分:0)
t = int(input())
ans = []
for i in range(t):
A = int(input())
a = list(map(int,input().split()))
B = int(input())
b = list(map(int,input().split()))
check = 0
for c in range(A):
if(A>B):
check = 0
break
else:
for j in range(B):
if(a[c]==b[j]):
check = 1
break
else:
check = 0
if(check == 0):
break
if(check == 1):
ans.append('True')
else:
ans.append('False')
del a
del b
print('\n'.join(map(str,ans)))
答案 3 :(得分:0)
for i in range(int(input())):
a = int(input())
A = set(input().split())
b = int(input())
B = set(input().split())
print(A.issubset(B))