这是练习(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])
答案 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)))
您的任务解决方案:
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)]