前提・実現したいこと
AtCoder Beginer Contest071のB問題で誤った出力になってしまいます。
問題
英小文字からなる文字列 Sが与えられます. Sに現れない英小文字であって,最も辞書順(アルファベット順)で小さいものを求めてください. ただし,Sにすべての英小文字が現れる場合は,代わりに None を出力してください.
出力
Sに現れない英小文字であって,最も辞書順で小さいものを出力せよ. ただし,
Sにすべての英小文字が現れる場合は,代わりに None を出力せよ.
この問題で以下のようなコードを書いたのですが、二重ループのところの処理がうまくいきませんでした。
発生している問題・エラーメッセージ
入力 fajsonlslfepbjtsaayxbymeskptcumtwrmkkinjxnnucagfrg に対して、出力されたのが b ['a', 'b', 'c', 'e', 'f', 'g', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'x', 'y'] ['b', 'd', 'f', 'h', 'j', 'l', 'n', 'p', 'q', 's', 'u', 'v', 'x', 'z'] でした。問題を探すために答えの他に二つのリストも出力したところ、alphaリストがなぜか偶数番目だけ残されてしまいましたが理由がわかりません。
該当のソースコード
python3
1line = input() 2alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] 3letters = [] 4for i in range(len(line)): 5 letters.append(line[i]) 6setted = sorted(set(letters)) 7for j in alpha: 8 for k in setted: 9 if j == k: 10 alpha.remove(j) 11if len(alpha) == 0: 12 print("None") 13else: 14 answer = alpha[0] 15 print(answer) 16print(setted) 17print(alpha)
回答1件
あなたの回答
tips
プレビュー