fix: handle odd-length palindromes by preserving middle character

This commit is contained in:
user
2026-07-29 21:12:36 +04:00
parent 70090a66e7
commit d8c1f83711
+6 -1
View File
@@ -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;
}
};