Проблема с обратной строкой Leetcode не принимает решение на месте

Ниже я публикую два решения, которые я пробовал в leetcode для проблемы №: 344.

https://leetcode.com/problems/reverse-string/

Решение 1

class Solution:
def reverseString(self, s: List[str]) -> None:
    return s[::-1]

Решение 2

class Solution:
def reverseString(self, s: List[str]) -> None:
    first = 0
    last = len(s) - 1
    
    while first <= last:
        s[first], s[last] = s[last], s[first]
        first += 1
        last -= 1
        
    return s
    

Насколько я понимаю, оба решения на месте. Однако решение 1 не принимается и указывает на неправильный ответ. Решение 2 принято. Может ли кто-нибудь помочь мне?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
35
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Первый не на месте. Ваша сигнатура функции указывает, что вы ничего не возвращаете, но делаете.

Ответ принят как подходящий

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

Правильное решение будет

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        s.reverse()

Также если вы хотите сделать в своем стиле, то правильная строка будет

s[:] = s[::-1]

Первое решение создает новый список и не изменяет параметр (что также выглядит чище).

Редактировать: Не обращайте внимания на следующую часть. Это ничего не сделает. Спасибо.

Однако вы можете сделать что-то вроде

s = s[::-1]

вместо оператора возврата.

Это не работает, вы можете попробовать это по ссылке выше. Так должно быть s[:]=s[::-1]

Deepak Tripathi 07.05.2022 10:02

Это решение не изменит объект, отправленный в функцию, поэтому решение нельзя понимать как локальное.

aluriak 07.05.2022 10:04

Другие вопросы по теме