Вот решение C++ проблемы «Перетасовка строк» в LeetCode:
#include <vector>
#include <string>
std::string restoreString(std::string s, std::vector<int>& indices) {
int n = s.length();
std::string result(n, ' ');
for (int i = 0; i < n; i++) {
result[indices[i]] = s[i];
}
return result;
}
Это решение принимает в качестве входных данных строку sи векторные index. Вектор indexпредставляет желаемый порядок символов в перетасованной строке. Функция restoreStringсоздает результирующую строку той же длины, что и s, и инициализирует ее пробелами. Затем он перебирает каждый символ в sи присваивает его соответствующей позиции в результирующей строке на основе индексов.
Пример использования:
std::string s = "codeleet";
std::vector<int> indices = {4, 5, 6, 7, 0, 2, 1, 3};
std::string shuffledString = restoreString(s, indices);
Результат shuffledStringв этом примере будет «leetcode».