AtCoder ABC 192 B – uNrEaDaBlE sTrInG Python解説

スポンサーリンク

uNrEaDaBlE sTrInG

先頭から奇数番目の文字が全て英小文字であり、かつ、先頭から偶数番目の文字が
全て英大文字であるような文字列を 読みにくい文字列 と呼びます。
文字列 S が読みにくい文字列かどうか判定してください。

AtCoder Beginner Contest 「uNrEaDaBlE sTrInG」

文字列の1文字目がデータ上では0番目になる点に注意しましょう。あとは、問題文の通り、奇数番目の文字がすべて英小文字、偶数番目の文字がすべて英大文字になっているか判定していきます。

s = input()

for i in range(len(s)):
    if i % 2 == 0 and s[i].isupper():
        print("No")
        break
    elif i % 2 != 0 and s[i].islower():
        print("No")
        break
else:
    print("Yes")

isupper関数で文字列が大文字、islower関数で文字列が小文字かどうか判定することができます。

s = input()

for i in range(len(s)):
    if i % 2 == 0 and "A" <= s[i] <= "Z":
        print("No")
        break
    elif i % 2 != 0 and "a" <= s[i] <= "z":
        print("No")
        break
else:
    print("Yes")

こちらはasciiコードを使った判定方法です。"A" <= s[i] <= “Z"とすれば、s[i]が英大文字かどうか判定することができます。

s = input()

a = all([c.islower() if i % 2 == 0 else c.isupper() for i, c in enumerate(s)])
print("Yes" if a else "No")

Pythonの組み込み関数allを使うと、すべての要素がTrueかどうかを判定してくれます。

AtCoderB問題

Posted by cheese