44# ifndef STRING_PALINDROMES_H
45# define STRING_PALINDROMES_H
49# include <string_view>
84 const size_t n =
text.size();
95 for (
size_t i = 0; i < n; ++i)
104 for (
size_t i = 0; i < n; ++i)
107 if (
static_cast<long long>(i) <=
r)
109 const size_t mirror =
l +
r -
static_cast<long long>(i);
111 static_cast<size_t>(
r -
static_cast<long long>(i) + 1));
114 while (
static_cast<long long>(i) -
static_cast<long long>(
k) >= 0
121 const long long new_l =
static_cast<long long>(i) -
static_cast<long long>(
k) + 1;
122 const long long new_r =
static_cast<long long>(i) +
static_cast<long long>(
k) - 1;
133 for (
size_t i = 0; i < n; ++i)
136 if (
static_cast<long long>(i) <=
r)
138 const auto mirror =
static_cast<size_t>(
l +
r -
static_cast<long long>(i) + 1);
140 static_cast<size_t>(
r -
static_cast<long long>(i) + 1));
143 while (
static_cast<long long>(i) -
static_cast<long long>(
k) - 1 >= 0
150 const long long new_l =
static_cast<long long>(i) -
static_cast<long long>(
k);
151 const long long new_r =
static_cast<long long>(i) +
static_cast<long long>(
k) - 1;
162 for (
size_t i = 0; i < n; ++i)
Simple dynamic array with automatic resizing and functional operations.
static Array create(size_t n)
Create an array with n logical elements.
Main namespace for Aleph-w library functions.
and
Check uniqueness with explicit hash + equality functors.
Divide_Conquer_DP_Result< Cost > divide_and_conquer_partition_dp(const size_t groups, const size_t n, Transition_Cost_Fn transition_cost, const Cost inf=dp_optimization_detail::default_inf< Cost >())
Optimize partition DP using divide-and-conquer optimization.
std::string longest_palindromic_substring(const std::string_view text)
Convenience wrapper returning only the longest palindromic substring.
Manacher_Result manacher(const std::string_view text)
Compute palindromic radii and the longest palindrome with Manacher.
Result object for Manacher's algorithm.
Array< size_t > odd_radius
odd_radius[i] is radius around center i (length = 2*r-1).
size_t longest_begin
0-based start index of the longest palindrome.
std::string longest_palindrome
The longest palindromic substring.
Array< size_t > even_radius
even_radius[i] is radius around center between i-1 and i (length = 2*r).
size_t longest_length
Length of the longest palindrome.
Dynamic array container with automatic resizing.