H - 圧縮おみくじ (Compressed Omikuji)
Editorial
/
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 200 点
問題文
platypusくんが神社でおみくじを引いたところ,そこには文字列 S が書かれていました.
文字列 S はアルファベットの小文字,および *
という文字から構成されています.
この神社は,回文,すなわち左から読んでも右から読んでも同じ文字列を縁起が良いとしています. platypusくんは,おみくじの縁起の良さを確かめたいと思っています. そこで,以下の操作で文字列 S から回文を構成できるかを判定することにしました.
- 英小文字で構成された長さ N の文字列を一つ作る.
- 文字列S中のすべての
*
を1.で選んだ文字列で置き換える.
文字列 S と整数 N が与えられたとき,上記の操作で回文を構成することが可能かを答えるプログラムを作りなさい.
制約
すべてのテストケースは以下の制約を満たします.
- 1 \leq N \leq 200000
- 文字列 S は英小文字および
*
で構成されている - 文字列 S は
*
を一文字以上含む - 1 \leq |S| \leq 200000 ( |S| は文字列 S の長さ)
入力
入力は以下の形式で標準入力から与えられる.
N S
- 1行目には整数 N が書かれている.これは,platypusくんが操作1.で作る文字列の長さを表している.
- 2行目には文字列 S が書かれている.これは,platypusくんが引いたおみくじに書かれていた文字列を表している.
出力
標準出力に,回文を構成することが可能な場合は Yes
を,不可能な場合は No
を一行で出力しなさい.
入力例 1
2 a**
出力例 1
Yes
例えば文字列 ba
を作ると,文字列 S は ababa
となり,回文を構成することができます.
入力例 2
3 a*b
出力例 2
No
先頭文字が a
で末尾文字が b
である文字列は回文にはなりえません.
入力例 3
3 *xy**
出力例 3
Yes
入力例 4
2 *xy**
出力例 4
No