Python输出错误中的子集 - HackerRank

时间:2016-07-30 11:34:41

标签: python python-2.7 set subset

这是来自HackerRank的问题

您将获得两套AB

您的工作是查找集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)

enter image description here

4 个答案:

答案 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))