0
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)
私は名前のリストが与えられており、すべての名前に適用される共通接頭辞を見つける必要があります。私のプログラムは動作しますが、常にそこにあるはずの文字をもう1つ返します。なぜですか、どうすれば修正できますか?高いスコア! ACMから2017
ループから抜け出すと、ブレークの下にあるコードが実行されますか?私のプレフィックス+ =はブレーク後に来るので、ブレークしてもそれを実行できないと思います。 @paul – jamestheasiangenius
前回のループで 'prefix'の最後に文字を追加しました。あなたは 'prefix'をテストして失敗するまでループから脱出しません。その時点の 'prefix'にはすでに失敗した文字列が含まれています。成功した文字列は、正確に1文字だけ短くなければなりません。 breakステートメントはループを終了するだけです。そのため、次のコードが実行されます。 –
Hmm。プレフィックス[: - 1]を使わずにこれを修正する方法はありますか?私は実際にこれを修正する方法を学びたいだけで、回避策を追加するだけではありません。ありがとう@paul – jamestheasiangenius