В этом посте я собираюсь пойти, хотя мое решение для этого Упражнение на лецкоде где вы должны поменять целое число.
Примеры:
- 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”