AtCoder ABC 053 B – A to Z String Python解説

2021年11月21日

スポンサーリンク

A to Z String

すぬけくんは文字列 s の連続した一部分(部分文字列という)を取り出して先頭が A であり末尾が Z であるような文字列を作ることにしました。 すぬけくんが作ることのできる文字列の最大の長さを求めてください。 なお,s には先頭が A であり末尾が Z であるような部分文字列が必ず存在することが保証されます。

AtCoder株式会社 AtCoder Beginner Contest

Aから始まってZで終わる文字列の最大の長さを求める。
AとZの差を求めると正解にたどり着けそうですが、AやZは複数出てくることがあるので、文字列が最大になるように気を付けましょう。

s = input()

start = len(s)
end = 0

for i in range(len(s)):
    if s[i] == "A":
        start = min(start, i)
        
    elif s[i] == "Z":
        end = max(end, i)
        
print(end - start + 1)
        

上記のコードでは、Aが一番最初に出現する位置をstartに、Zが一番最後に出現する位置をendに入れ、最後に差分を取っています。

s = input()

print(s.rfind("Z") - s.find("A") + 1)

このコードでは、組み込み関数のfindとrfindを使いAとZの位置を出しています。