AtCoder Beginner Contest

【pythonでABC192を解説】B - uNrEaDaBlE sTrInG

問題概要

問題ページ

問題文

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

文字列 \(S\) が読みにくい文字列かどうか判定してください。

制約

  • \(S\) は英大文字及び英小文字のみからなる
  • \(S\) の長さは \(1\) 以上 \(1000\) 以下

問題の考察

文字列のうち奇数番目は小文字、偶数番目は大文字であるか判定する問題。

pythonの場合には、lower()で小文字に、upper()で大文字に変換できる。

次のようにして、文字列が大文字か小文字か判別できる。

pythonのメリット

  • lower()で小文字に変換
    • 変換前と変換後が一致\(=\)変換前は小文字
    • 変換前と変換後が不一致\(=\)変換前は大文字
  • upper()で小文字に変換
    • 変換前と変換後が一致\(=\)変換前は大文字
    • 変換前と変換後が不一致\(=\)変換前は小文字

for文で文字列を全て調べてれば、奇数番目は小文字、偶数番目は大文字であるか判定できる。

文字列のi番目が奇数番目か偶数番目かの判定は、if文を使ってif i % 2 == 0:というようにしている。

たびすけ
大文字・小文字の判定はlower()upper()でできます。
こちらは頻出なので覚えてしまいましょう!

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    s = str(input().rstrip('\n'))
    for i in range(len(s)):
        if i % 2 == 0:
            if s[i].lower() != s[i]:
                print("No")
                exit()
        else:
            if s[i].upper() != s[i]:
                print("No")
                exit()
    print("Yes")


if __name__ == '__main__':
    solve()

プログラミング

-AtCoder Beginner Contest
-