Reverse String
https://leetcode.com/problems/reverse-string | Easy |
Условие
Напишите функцию, которая переворачивает строку. Входная строка задается как массив символов s.
Примеры
Input:
s = ["h", "e", "l", "l", "o"]Output:
["o", "l", "l", "e", "h"]
Input:
s = ["H", "a", "n", "n", "a", "h"]Output:
["h", "a", "n", "n", "a", "H"]
Решение
/**
* В Kotlin можно эффективно решить эту задачу, используя два указателя,
* чтобы обменивать элементы с обоих концов массива, пока указатели не встретятся в середине.
*/
fun reverseString(s: CharArray) {
var left = 0 // Начало массива
var right = s.size - 1 // Конец массива
// Цикл продолжается до тех пор, пока указатели не пересекутся, что означает, что массив перевернут.
while (left < right) {
// Меняем местами элементы на позициях left и right
val temp = s[left]
s[left] = s[right]
s[right] = temp
// Двигаем указатели
left++
right--
}
}
Временная сложность
O(n), где n — это количество элементов в массиве. Это связано с тем, что каждая итерация цикла выполняется за постоянное время и цикл выполняется n/2 раз.
Пространственная сложность
O(1), поскольку используется фиксированное количество дополнительной памяти, которое не зависит от размера входных данных.