7.整数反転(Python)
1894 ワード
もっと素晴らしい内容は、「力ボタンの簡単な問題」に注目してください.
タイトル
難易度:★☆☆☆☆タイプ:数学
32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.注意:我々の環境では32ビット以下の符号付き整数しか記憶できないと仮定すると、その数値範囲は[−2^31,2^31−1]である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
例
例1:
入力:123出力:321例2:
入力:-123出力:-321例3:
入力:120出力:21
に答える
シナリオ1:文字列に変換
2つの選択に注意すればいい:1.正負の数字の違い.2.最終結果が境界を越えたかどうか.
Pythonの簡略版もあります.道理は同じです.
シナリオ2:残高
私たちは反転する時、新しい変数numを定義するだけで、初期値は0で、入力値を10で割ることで最後の数tmpを取り出し続け、この変数に10とtmpを乗じて現在の数を得て、入力数字が右から左まですべての数字が新しい変数numに移されるまで繰り返します.
質問やアドバイスがあれば、コメントエリアへようこそ~
タイトル
難易度:★☆☆☆☆タイプ:数学
32ビットのシンボル付き整数を与えます.この整数の各ビットの数字を反転する必要があります.注意:我々の環境では32ビット以下の符号付き整数しか記憶できないと仮定すると、その数値範囲は[−2^31,2^31−1]である.この仮定に基づいて、反転後に整数がオーバーフローした場合は0を返します.
例
例1:
入力:123出力:321例2:
入力:-123出力:-321例3:
入力:120出力:21
に答える
シナリオ1:文字列に変換
2つの選択に注意すればいい:1.正負の数字の違い.2.最終結果が境界を越えたかどうか.
class Solution:
def reverse(self, x):
chars = list(str(x)) #
if x < 0:
chars.remove('-') #
chars.reverse() #
r = ''.join(chars) #
r = - int(r) #
else:
chars.reverse() #
r = ''.join(chars) #
r = int(r) #
if not -pow(2, 31) <= r <= pow(2, 31) - 1:
r = 0
return r
Pythonの簡略版もあります.道理は同じです.
class Solution:
def reverse(self, x):
r = int('-' + ''.join(reversed(list(str(x).strip('-'))))) if x < 0 else int(''.join(reversed(list(str(x).strip('-')))))
return r if -pow(2, 31) <= r <= pow(2, 31) - 1 else 0
シナリオ2:残高
私たちは反転する時、新しい変数numを定義するだけで、初期値は0で、入力値を10で割ることで最後の数tmpを取り出し続け、この変数に10とtmpを乗じて現在の数を得て、入力数字が右から左まですべての数字が新しい変数numに移されるまで繰り返します.
class Solution:
def reverse(self, x):
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
質問やアドバイスがあれば、コメントエリアへようこそ~