无法获得正确的提交解决方案

时间:2019-03-13 12:45:22

标签: python

这是练习(here)的一个示例问题,由于给出了“错误的答案”,因此未被接受。它可以很好地编译,但是可能用于不同的测试输入,但提交失败。
我只是要求对此发表评论,希望这个问题一定很小。

问题陈述是:
程序应接受第一行输入为否。字符串它小于10。接下来的行应包含一个字符串,每个字符串的长度小于100个字符。需要在字符串中查找“ gfg”的出现。 如果未发现任何情况,则应返回-1。

#code
t = int(input())
if t > 10 or t<0:
    exit()
arr = [[0] for i in range(t)]
total = [[-1] for i in range(t)] 


for i in range(t):
    arr[i] = [k for k in input().split()[:1]]  
    for j in arr[i]:
        total[i] = j.count("gfg")
        if total[i]==0: total[i]=-1
        print (total[i]) 

2 个答案:

答案 0 :(得分:2)

t = int(input())
if t not in range(10):
    exit()
else:
    pass

total = []
for i in range(t):
    line = input()[:100]
    if line.count("gfg") == 0:
        total.append(-1)
    else:
        total.append(line.count("gfg"))

print('\n'.join(map(str, total)))

enter image description here

您的任务解决方案:

  t = int(input())
  total = []

  for i in range(1, t + 1):
      line = input()
      if len(line)<=100:

           count = 0
           for i in range(0, len(line) - 3 + 1):
               if line[i:i + 3] == "gfg":
                   count += 1
           if count != 0:
               total.append(count)
           else:
               total.append(-1)

  for i in total:
      print (i)

注意:由于特殊情况,您的提交失败

例如: 在字符串gfgfg中,您的子字符串“ gfg”出现2次,在这种情况下,您不能使用字符串count()方法

如何查看,在这里 line [i:i + 3] 我正在逐个索引移动索引并检查接下来的3个值(因为您输入的“ gfg”的长度为3)

答案 1 :(得分:0)

每次在上一个循环中进行迭代时,您都将擦除total [i]的值:

>>> for j in arr[i]:
>>>    total[i] = j.count("gfg")
>>>    if total[i]==0:
>>>       total[i]=-1
>>>    print (total[i]) 

您要计算每个单词或整个句子中出现的次数吗?因为那样的话你只需要写:

>>> for i in range(t):
>>>    n_occ = input().count("gfg")
>>>    if n_occ != 0:
>>>       total[i] = n_occ

如果不发生任何情况,则无需执行任何操作,因为总值已为-1。 另外,写:

>>> total = [-1]*t

不是:

>>> total = [[-1] for i in range(t)]