leetcode-整数反転


32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.
例1:
  : 123  : 321

例2:
  : -123  : -321

例3:
  : 120  : 21

注意:
我々の環境では32ビット以下の符号付き整数しか記憶できないと仮定すると,その数値範囲は[−231,231−1]である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
class Solution:
    def reverse(self, x: int) -> int:
        if x > 0:
            xstr = str(x)
            if not xstr.endswith('0'):
                xlist = list(xstr)
                xlist.reverse()
                x = int(''.join(xlist))
            else:
                xlist = list(xstr)
                xlist.pop()
                xlist.reverse()
                x = int(''.join(xlist))
            if x > pow(2, 31):
                return 0
            else:
                return x
        elif x == 0:
            return x

        else:
            x = x.__abs__()
            xstr = str(x)
            if not xstr.endswith('0'):
                xlist = list(xstr)
                xlist.reverse()
                x = int(''.join(xlist))
            else:
                xlist = list(xstr)
                xlist.pop()
                xlist.reverse()
                x = int(''.join(xlist))
            if x > pow(2, 31):
                return 0
            else:
                return 0-x

実行時間:56 ms、Reverse IntegerのPython 3コミットで98.51%のユーザーを破った
メモリ消費量:13.1 MB、Reverse IntegerのPython 3コミットで90.48%のユーザーを破った