Leetcodeプログラミング問題ノート2
9870 ワード
タイトル:
32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.
例1:
入力:123出力:321例2:
入力:-123出力:-321例3:
入力:120出力:21注意:
我々の環境では32ビット以下の符号付き整数しか記憶できないと仮定すると,その数値範囲は[−231,231−1]である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
解法1:文字列に変換
文字列の逆順序
b=a[i:j:s]というフォーマットですね.sはステップを表し、デフォルトは1です.したがって、a[i:j:1]はa[i:j]に相当するs<0の場合、iデフォルトの場合、デフォルトは-1である.jデフォルトでは、デフォルトは-len(a)-1なので、a[:-1]はa[-1:-len(a)-1:-1]に相当し、つまり最後の要素から最初の要素にコピーされます.逆順です.
解法2:数学演算
32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.
例1:
入力:123出力:321例2:
入力:-123出力:-321例3:
入力:120出力:21注意:
我々の環境では32ビット以下の符号付き整数しか記憶できないと仮定すると,その数値範囲は[−231,231−1]である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
解法1:文字列に変換
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
# , ,
if -10 < x < 10:
return x
# x
str_x = str(x)
#
if str_x[0] != "-":
#
str_x = str_x[::-1]
# str int
x = int(str_x)
else:
# ,
str_x = str_x[1:][::-1]
# str int
x = int(str_x)
#
x = -x
# ,
# -2147483648 < x < 2147483647 x, 0
return x if -2147483648 < x < 2147483647 else 0
---------------------
:
:CSDN
:https://blog.csdn.net/chenhua1125/article/details/80464642
: , !
文字列の逆順序
b=a[i:j:s]というフォーマットですね.sはステップを表し、デフォルトは1です.したがって、a[i:j:1]はa[i:j]に相当するs<0の場合、iデフォルトの場合、デフォルトは-1である.jデフォルトでは、デフォルトは-len(a)-1なので、a[:-1]はa[-1:-len(a)-1:-1]に相当し、つまり最後の要素から最初の要素にコピーされます.逆順です.
解法2:数学演算
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
num = 0
if x == 0:
return 0
if x < 0:
x = -x
while x != 0:
num = num*10 + x%10
x = x/10
num = -num
else:
while x != 0:
num = num*10 + x%10
x = x/10
if num>pow(2,31)-1 or num < pow(-2,31):
return 0
return num
---------------------
:
:CSDN
:https://blog.csdn.net/qiubingcsdn/article/details/81744579
: , !