From 96254947699986c59f0dc63d69fd4b76bd3ed43e Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 6 Jul 2026 19:08:08 +0200 Subject: Initial commit --- 08_string_algorithms/finding_borders_1732.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 08_string_algorithms/finding_borders_1732.cpp (limited to '08_string_algorithms/finding_borders_1732.cpp') diff --git a/08_string_algorithms/finding_borders_1732.cpp b/08_string_algorithms/finding_borders_1732.cpp new file mode 100644 index 0000000..d5cbbd4 --- /dev/null +++ b/08_string_algorithms/finding_borders_1732.cpp @@ -0,0 +1,23 @@ +#include +#include +#include +#include + +int main() { + std::string s; + std::cin >> s; + std::vector z(s.size(), 0), c; + z[0] = s.size(); + for (size_t i = 1, j = 0, k = 0; i < s.size(); i++) { + if (j < i || z[i-k] == j-i) { + for (j = std::max(i, j); j < s.size() && s[j] == s[j-i]; j++) ; + z[k=i] = j-i; + } else z[i] = std::min(z[i-k], j-i); + if (z[i] == s.size()-i) + c.push_back(z[i]); + } + std::sort(c.begin(), c.end()); + for (auto x : c) + std::cout << x << " "; + std::cout << "\n"; +} -- cgit v1.3