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)
Ich habe eine Liste von Namen und ich muss das gemeinsame Präfix für jeden Namen finden. Mein Programm funktioniert, gibt aber immer einen weiteren Buchstaben zurück, als es sein soll. Warum ist das und wie repariere ich es?Highscore! Von ACM 2017
Wenn ich aus der Schleife ausbricht, führt es immer noch den Code unter der Pause? Weil mein Präfix + = NACH der Pause kommt, also würde ich denken, dass es es nicht laufen lassen würde, wenn es bricht. @paul – jamestheasiangenius
Die letzte Zeit durch die Schleife haben Sie ein Zeichen am Ende von 'Präfix' hinzugefügt. Du verlässt die Schleife erst, nachdem du "Präfix" getestet hast und es fehlgeschlagen ist. So enthält 'Präfix' an diesem Punkt bereits eine Zeichenfolge, die fehlschlägt; Die Zeichenfolge, die erfolgreich war, muss um genau ein Zeichen kürzer sein. Die break-Anweisung verlässt die Schleife so, dass der folgende Code ausgeführt wird. –
Hmm. Gibt es eine Möglichkeit, dies zu beheben, ohne das Präfix [: - 1] zu verwenden? Ich möchte lernen, wie man das wirklich beheben kann und nicht nur eine Problemumgehung hinzufügen. Danke @paul – jamestheasiangenius