Рубрики
Без рубрики

Как поменять целое число в Python | Практика лецкодов

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

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

Примеры:

  • 123 -> 321
  • -123 -> -321
  • 120 -> 21

Ограничивает: если целое число за пределами диапазона [-2 ** 31, 2 ** 31 – 1] Вернуться 0.

Пройдите на него и давайте сравним наши решения!

Решение

Сначала я опубликую свое решение, а затем пройти рассуждение позади этого:

def reverse(self, x: int) -> int:   

        if x < 0:
            x = str(x)[1:][::-1]

            while x[0] == '0':
                x = x[1:]

            x = 0-int(x)

            if x < -2**31:
                return 0

            return x

        else:
            if x <10:
                return x

            x = str(x)[::-1]

            while x[0] == '0':
                x = x[1:]

            x = int(x)

            if x > (2**31)-1:
                return 0

            return x

Я решил решить это в 2 сценариях: Когда X <0 и когда X есть. Давайте начнем с X <0.

Сначала мы поворачиваем X в строку, удалите «-» и отменить его. Все это позаботится по этой линии:

x = str(x)[1:][::-1]

Пример того, что указана вышеуказанная линия: -123 -> ‘-123’ -> ‘123’ -> ‘321’

Если новая строка имеет «0» в начале, мы используем цикл во время удаления всех нулей, пока мы не найдем ненулевой символ:

while x[0] == '0':
    x = x[1:]

Затем мы обратно X обратно в отрицательное целое число и проверьте, находится ли он в пределах размера. Если это мы возвращаем x, в противном случае мы возвращаем 0:

x = 0-int(x)  
if x < -2**31:
   return 0

return x

Далее мы посмотрим на случай, когда x.

Если X <10 Это означает, что это однозначное письмо, оно обращается, просто будет сам по себе, поэтому мы возвращаем его:

if x <10:
   return x

Далее мы следуем той же логике, что и выше. Мы превращаем его в строку и поменяйте его:

x = str(x)[::-1]

Мы разбиваем его 0, если в начале строки есть какие-либо в начале строки:

while x[0] == '0':
    x = x[1:]

Мы отвервляем его обратно в целое число и проверяте против ограничений. Если он не соответствует требованиям размера, мы возвращаем 0, в противном случае верните X:

x = int(x)

if x > (2**31)-1:
    return 0

return x

Это было мое решение, дайте мне знать, если у вас был другой!

Также, если вы хотите, вы можете следовать за мной здесь или в Twitter:)

Оригинал: “https://dev.to/mariamodan/how-to-reverse-an-integer-in-python-leetcode-practice-218g”