Сложность: easy
Дана строка s. Необходимо изменить порядок символов в каждом слове в предложении, сохранив при этом пробелы и начальный порядок слов.
Пример:
Input: s = "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"
👨💻 Алгоритм:
1⃣Создайте переменную lastSpaceIndex и установите её значение в -1. Пройдите по каждому символу строки s от 0-го до n-го индекса, используя указатель strIndex.
2⃣Когда strIndex указывает на пробел, определите начало (startIndex = lastSpaceIndex + 1) и конец (endIndex = strIndex - 1) текущего слова. Используя два указателя, измените порядок символов в текущем слове.
3⃣Обновите lastSpaceIndex значением strIndex. После окончания цикла измените порядок символов в последнем слове (от lastSpaceIndex + 1 до конца строки).
😎 Решение:
class Solution {
function reverseWords($s) {
$chars = str_split($s);
$lastSpaceIndex = -1;
$len = count($chars);
for ($strIndex = 0; $strIndex <= $len; $strIndex++) {
if ($strIndex == $len || $chars[$strIndex] == ' ') {
$startIndex = $lastSpaceIndex + 1;
$endIndex = $strIndex - 1;
while ($startIndex < $endIndex) {
$temp = $chars[$startIndex];
$chars[$startIndex] = $chars[$endIndex];
$chars[$endIndex] = $temp;
$startIndex++;
$endIndex--;
}
$lastSpaceIndex = $strIndex;
}
}
return implode('', $chars);
}
}Ставь 👍 и забирай 📚 Базу знаний
