From d8c1f83711fd0da476e793dcf78a0d90a53e5de8 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 29 Jul 2026 21:12:36 +0400 Subject: [PATCH] fix: handle odd-length palindromes by preserving middle character --- 3518/solution.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/3518/solution.cpp b/3518/solution.cpp index 45fbf10..2345852 100644 --- a/3518/solution.cpp +++ b/3518/solution.cpp @@ -9,6 +9,7 @@ public: std::string smallestPalindrome(std::string s, int k) { std::string half = s.substr(0, s.size() / 2); + char middle = (s.size() % 2 == 1) ? s[s.size() / 2] : '\0'; std::ranges::sort(half); @@ -28,11 +29,15 @@ public: } auto it = permutations.begin(); - advance(it, k - 1); + std::advance(it, k - 1); std::string mirroredHalf = *it; std::ranges::reverse(mirroredHalf); + if (middle != '\0') { + return *it + std::string(1, middle) + mirroredHalf; + } + return *it + mirroredHalf; } };