考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC053-B - A to Z String を解く

ABC053-B - A to Z String

 

与えられた文字列内にある連続する部分文字列の中で

'A' で始まって 'Z' で終わるもののうち、一番長いものを求める問題

 

そういった連続する部分文字列が1つしか存在しない場合は

適当に取っても特に問題はないが、複数存在する場合は注意が必要である

 

例:

'ABCZDEFZ' の場合

 

×: 'ABCZDEFZ'

○: 'ABCZDEFZ'

 

つまり、'A' や 'Z' が文字列中に複数存在する場合は

'A' は最も左にあるものを、'Z' は最も右にあるものを選ぶ必要がある

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
s=input()

# 'A'と'Z'の位置を保存する変数
a=z=-1

for i in range(len(s)):
  if a==-1 and s[i]=='A':
    a=i
  if s[i]=='Z':
    z=i

# 出力
print(z-a+1)

 

それぞれの文字列位置を引き算しただけでは

抜き出した文字列の長さに 1 足りないので、+1 する必要がある

 

また、上記コードでは a を 0 などで初期化していると

'AAZ' などのパターンで失敗してしまうので注意

 

提出結果はACでした