Разворачиваем каждое слово в строке
Привет, меня зовут Иван и я хочу поделиться с вами своим опытом работы с функцией, которая разворачивает каждое слово в строке. Эта функция очень полезна, если у вас есть необходимость изменить порядок символов в каждом слове, но сохранить пробелы между словами.
Вот пример задачи, которую мне пришлось решить. Предположим, у нас есть строка⁚ ″This is an example!″. Мы хотим развернуть каждое слово в этой строке, но при этом сохранить пробелы между словами. Ожидаемый результат⁚ ″sihT si na !elpmaxe″. Как это сделать?
Я использовал язык программирования Golang для реализации этой функции. Давайте посмотрим на мой код⁚
Код⁚
package main
import (
″fmt″
″strings″
)
func reverseWords(s string) string {
words ⁚ strings.Split(s, ″ ″)
for i ⁚ 0; i < len(words); i {
words[i] reverseString(words[i])
}
return strings.Join(words, ″ ″)
}
func reverseString(s string) string {
runes ⁚ []rune(s)
for i, j ⁚ 0, len(runes)-1; i < j; i, j i 1, j-1 {
runes[i], runes[j] runes[j], runes[i]
}
return string(runes)
}
func main {
s ⁚ ″This is an example!″
reversed ⁚ reverseWords(s)
fmt.Println(reversed)
}
В функции reverseWords мы сначала разбиваем исходную строку на отдельные слова с помощью функции Split из пакета strings. Затем мы проходим по каждому слову и применяем функцию reverseString, которая разворачивает каждое слово. Наконец, мы объединяем развернутые слова с помощью функции Join и возвращаем результат.
Функция reverseString принимает строку и преобразует ее в массив рун (символов). Затем мы меняем порядок элементов массива с помощью двух указателей ー один указывает на первый элемент, а другой на последний элемент массива. После каждой итерации мы сдвигаем указатели в сторону друг друга до тех пор, пока не достигнем середины массива. В конце мы преобразуем массив рун обратно в строку и возвращаем ее.
Если мы запустим этот код, то получим ожидаемый результат ″sihT si na !elpmaxe″. Просто замечательно, не правда ли? Эта функция помогает развернуть каждое слово в строке, сохраняя порядок слов и пробелы между ними.
Я надеюсь, что мой опыт работы с этой функцией был полезным для вас. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не стесняйтесь задавать их. Я всегда готов помочь!