Manacher's algorithm
(include/string/manachers_algorithm.hpp)
Manacher’s algorithm を用いて、配列中の各位置を中心とする最長の回文である連続部分文字列の長さを求める関数が定義されています。
palindrome_length_array(S)
S
の各位置を中心とする最長の回文である連続部分文字列の長さを格納した配列 (std::deque<int>
) を返します。例えば std::string
型の値 S
が "abbba"
である場合、それぞれの位置に対して最長の回文の長さは
となるため、返り値は {1 0 1 2 5 2 1 0 1}
です。
Verified with
Code
Back to top page