5 умных способов перевернуть каждое слово в предложении, сохраняя при этом позицию

Перестановка каждого слова в предложении с сохранением его позиции может оказаться интересным упражнением по программированию. В этой статье мы рассмотрим пять различных методов решения этой задачи на примерах кода. К концу вы получите четкое представление о различных подходах, которые можно использовать, чтобы перевернуть слова в предложении, не меняя их положения.

Метод 1: разделение и перестановка отдельных слов

В этом методе мы разбиваем предложение на отдельные слова, переворачиваем каждое слово, а затем соединяем их обратно, образуя перевернутое предложение.

Пример Python:

def reverse_words(sentence):
    words = sentence.split()
    reversed_words = [word[::-1] for word in words]
    reversed_sentence = ' '.join(reversed_words)
    return reversed_sentence
sentence = "Reverse every word from a sentence but maintain position."
reversed_sentence = reverse_words(sentence)
print(reversed_sentence)

Пример JavaScript:

function reverseWords(sentence) {
    var words = sentence.split(" ");
    var reversedWords = words.map(function(word) {
        return word.split("").reverse().join("");
    });
    var reversedSentence = reversedWords.join(" ");
    return reversedSentence;
}
var sentence = "Reverse every word from a sentence but maintain position.";
var reversedSentence = reverseWords(sentence);
console.log(reversedSentence);

Метод 2: перестановка слов местами

В этом методе мы перебираем каждое слово в предложении и переворачиваем его, меняя местами символы с обоих концов.

Пример Python:

def reverse_words_in_place(sentence):
    words = sentence.split()
    reversed_sentence = ' '.join([word[::-1] for word in words])
    return reversed_sentence
sentence = "Reverse every word from a sentence but maintain position."
reversed_sentence = reverse_words_in_place(sentence)
print(reversed_sentence)

Пример JavaScript:

function reverseWordsInPlace(sentence) {
    var words = sentence.split(" ");
    var reversedSentence = words.map(function(word) {
        return word.split("").reverse().join("");
    }).join(" ");
    return reversedSentence;
}
var sentence = "Reverse every word from a sentence but maintain position.";
var reversedSentence = reverseWordsInPlace(sentence);
console.log(reversedSentence);

Метод 3: использование регулярных выражений

Регулярные выражения можно использовать для идентификации слов в предложении и их изменения местами, сохраняя их позиции.

Пример Python:

import re
def reverse_words_regex(sentence):
    reversed_sentence = re.sub(r'\b(\w+)\b', lambda m: m.group(1)[::-1], sentence)
    return reversed_sentence
sentence = "Reverse every word from a sentence but maintain position."
reversed_sentence = reverse_words_regex(sentence)
print(reversed_sentence)

Пример JavaScript:

function reverseWordsRegex(sentence) {
    var reversedSentence = sentence.replace(/\b(\w+)\b/g, function(match) {
        return match.split("").reverse().join("");
    });
    return reversedSentence;
}
var sentence = "Reverse every word from a sentence but maintain position.";
var reversedSentence = reverseWordsRegex(sentence);
console.log(reversedSentence);

Метод 4: использование структуры данных стека

Этот метод предполагает использование стека для переворачивания каждого слова в предложении, сохраняя при этом их исходное положение.

Пример Python:

def reverse_words_stack(sentence):
    words = sentence.split()
    reversed_sentence = ''
    for word in words:
        stack = list(word)
        reversed_word = ''
        while stack:
            reversed_word += stack.pop()
        reversed_sentence += reversed_word + ' '
    return reversed_sentence.rstrip()
sentence = "Reverse every word from a sentence but maintain position."
reversed_sentence = reverse_words_stack(sentence)
print(reversed_sentence)

Пример JavaScript:

function reverseWordsStack(sentence) {
    var words = sentence.split(" ");
    var reversedSentence = "";
    words.forEach(function(word) {
        var stack = word.split("");
        var reversedWord = "";
        while (stack.length > 0) {
            reversedWord += stack.pop();
        }
        reversedSentence += reversedWord + " ";
    });
    return reversedSentence.trim();
}
var sentence = "Reverse every word from a sentence but maintain position.";
var reversedSentence = reverseWordsStack(sentence);
console.log(reversedSentence);

Метод 5: использование рекурсии

В этом методе мы рекурсивно переворачиваем каждое слово в предложении, сохраняя его исходное положение.

Пример Python:

def reverse_words_recursive(sentence):
    words = sentence.split()
    if not words:
        return ''
    return words[0][::-1] + ' ' + reverse_words_recursive(' '.join(words[1:]))
sentence = "Reverse every word from a sentence but maintain position."
reversed_sentence = reverse_words_recursive(sentence)
print(reversed_sentence)

Пример JavaScript:

function reverseWordsRecursive(sentence) {
    var words = sentence.split(" ");
    if (words.length === 0) {
        return "";
    }
    return words[0].split("").reverse().join("") + " " + reverseWordsRecursive(words.slice(1).join(" "));
}

var sentence = "Reverse every word from a sentence but maintain position.";
var reversedSentence = reverseWordsRecursive(sentence);
console.log(reversedSentence);

В этой статье мы рассмотрели пять различных способов перевернуть каждое слово в предложении, сохранив их позиции. Каждый метод продемонстрировал уникальный подход к решению проблемы: от разделения и соединения слов до использования регулярных выражений, стеков и рекурсии. В зависимости от вашего языка программирования или предпочтений вы можете выбрать метод, который соответствует вашим потребностям. Удачи, экспериментируя с этими техниками и открывая новые возможности!