公式
D - Han Burger 解説
by
D - Han Burger 解説
by
hint908
\(S\) を反転させた文字列を \(rev(S)\) と表記します。
\(S\) に対して「同じ文字が隣り合う箇所を削除すること」を削除できなくなるまで繰り返してできる文字列を \(T\) とすると、\(S + rev(T)\) はバーガーとなります。
ここで、全バーガーである文字列 \(\Leftrightarrow\) バーガーのうち先頭と末尾が同じである文字列、が成り立ちます。
そのため \(S + rev(T)\) の先頭と末尾が同じ文字なら \(rev(T)\) がそのまま答えとなり、そうでないなら \(rev(T)+ S_1 + S_1\) が答えとなります。
最初の \(T\) の求め方ですが、以下の手順により求めることができます。
- 空文字列 \(T\) に対しで、\(c = S_1,S_2, \dots, S_{|S|}\) の順に以下を行う。
- \(T\) の末尾が \(c\) であるなら \(T\) の末尾の文字を削除する。
- そうでないなら \(T\) の末尾に \(c\) を追加する。
投稿日時:
最終更新:
