問題概要
問題ページ
-
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()