LeetCode問題練習Easy編:Reverse integer問題

LeetCodeの問題解答2問目は数字の並べ替え問題。

例えば123なら321にする感じのコードです。

頭が文系だとintを文字列に戻して処理を行う方にどうしても発想がいってしまいますね。リストのスライス表示を利用すると簡単なので、この方法もありでしょうね。

class Solution(object):
   def reverse(self, x):
       if int(str(abs(x))[::-1])> 2**31 :
           return(0)
       elif x < 0 : 
           return(-int(str(-x)[::-1]))
       else:
           return(int(str(x)[::-1]))

あと10で割った商とあまりで計算していく方法が理系的なようで、自分なりにはこんな形の解答を考えました。

class Solution(object):
   def reverse(self, x):
       rev=0     
       if x < 0 : 
           n=-x
  
           while(n > 0): 
               a = n % 10
               rev = rev * 10 + a 
               n = n // 10
           rev=-rev
       else:
           n=x
   
           while(n >  0): 
               a = n % 10
               rev = rev * 10 + a 
               n = n //10
               
       if abs(rev) > 2**31 :
           rev = 0  
       return(rev)   

四則演算べき乗、if文、リストなどがきちんと頭に入っていれば解ける問題でしょうか?

この記事が気に入ったらサポートをしてみませんか?