testcases = int(input())
for i in range(testcases):
n = int(input())
names = []
for a in range(n):
names.append(input())
prefix = ''
for b in range(len(names[0])):
for c in names:
if c.startswith(prefix) == True:
common = True
else: common = False
if common == False:
break
prefix += names[0][b]
print(prefix)我得到了一个名字列表,我需要找到适用于每个名字的通用前缀。我的程序可以工作,但总是返回一个字母,而不是应该返回的字母。为什么会出现这种情况,我该如何修复它?
发布于 2017-11-03 09:32:24
如果当前前缀与输入的所有名称都匹配,则再添加一个字符。当它不匹配时,您将中断循环-但导致失败的字符仍然附加到prefix的末尾。
有多种方法可以解决这个问题,但一种可能是通过在循环外添加以下语句来删除最后一个字符:
prefix = prefix[:-1] # python slice notation - remove the last element你的代码有一些风格问题。这些问题最好在CodeReview上解决,而不是Stackoverflow。
我会这样做(在用硬编码的测试用例替换输入语句之后):
x = ["Joseph", "Jose", "Josie", "Joselyn"]
n = 0
try:
while all(a[n] == x[0][n] for a in x[1:]):
n += 1
except IndexError:
pass
print(x[0][:n])这个脚本打印"Jos“。
https://stackoverflow.com/questions/47086990
复制相似问题