Edit

【pythonでABC159を解説】B - String Palindrome

問題概要

問題ページ

B - String Palindrome
B - String Palindrome

問題ページへ移動する

問題文

長さが奇数である文字列 \(S\) が以下の条件をすべて満たすとき、\(S\) は「強い回文」であるといいます。

  • \(S\) は回文である。
  • \(N\) を \(S\) の長さとするとき、\(S\) の \(1\) 文字目から \((N-1)/2\) 文字目まで(両端含む)からなる文字列は回文である。
  • \(S\) の \((N+3)/2\) 文字目から \(N\) 文字目まで(両端含む)からなる文字列は回文である。

\(S\) が強い回文かどうかを判定してください。

制約

  • \(S\) は英小文字のみからなる
  • \(S\) の長さは \(3\) 以上 \(99\) 以下の奇数

問題の考察

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 s[i] != s[-i-1]:
            print("No")
            exit()
    for i in range(len(s) // 2):
        if s[i] != s[-i - 2 - len(s)//2]:
            print("No")
            exit()
        if s[i + 1 + len(s) // 2] != s[-i-1]:
            print("No")
            exit()
    print("Yes")




if __name__ == '__main__':
    solve()

-Edit