【问题标题】:Subset in Python output error - HackerRankPython 输出错误中的子集 - HackerRank
【发布时间】:2016-07-30 11:34:41
【问题描述】:

这是来自HackerRank的问题

给你两组AB

你的工作是找出集合 A 是否是集合 B 的子集。

如果设置 A 是设置 B 的子集,则打印 True。

如果集合 A 不是集合 B 的子集,则打印 False。


输入格式:

第一行将包含测试用例的数量T

每个测试用例的第一行包含集合A中的元素数。

每个测试用例的第二行包含集合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)

【问题讨论】:

    标签: python python-2.7 set subset


    【解决方案1】:

    问题规范是这样说的:

    注意:超过 4 行将导致得分为零。空行不计算在内。

    您的解决方案使用了 7 行,因此算作失败。

    【讨论】:

    • 糟糕!你说的对。现在只使用print A.issubset(B)
    【解决方案2】:

    在 Python-3 中 ##黑客排名## ##检查子集##

    for i in range(int(input())): 
        a = int(input())
        A = set(input().split()) 
        b = int(input())
        B = set(input().split())
        print(A <= B)
    

    【讨论】:

      【解决方案3】:
      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)))
      

      【讨论】:

      • 不使用 issubset(),可以在 Python 3 中正常工作,希望对您有所帮助
      • 嘿,强烈建议稍微解释一下答案,而不仅仅是粘贴代码。
      【解决方案4】:
      for i in range(int(input())): 
         a = int(input())
         A = set(input().split())
         b = int(input())
         B = set(input().split())
         print(A.issubset(B)) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-05
        相关资源
        最近更新 更多