Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで整数の桁を逆順に反転する方法を解説

問題の概要

32ビット符号付き整数が与えられ、その各桁を逆順に並べ替えることを考えます。たとえば、入力が425であれば出力は524となります。また、整数は符号を持つため、負の数にも対応する必要があります。入力が-425の場合は、-524が出力されます。

前提条件と制約

この問題では、扱う値は32ビット符号付き整数の範囲、すなわち-2147483648 ~ 2147483647(-231 ~ 231-1)に収まるものとします。もし反転後の結果がこの範囲を超えてオーバーフローする場合は、関数は0を返します。

解き方のアプローチ

この問題はPythonを使うと非常にシンプルに解けます。基本的な流れは以下の通りです。

  1. 与えられた整数を文字列に変換する
  2. 先頭の文字が「-」であれば負の数として、符号を除いた部分だけを逆順にする
  3. 逆順にした文字列を再び整数に変換して返す
  4. 結果が32ビット整数の範囲外であれば0を返す

Pythonのスライス記法[::-1]を使うと、文字列を簡単に逆順にできます。負の数の場合はx[-1:0:-1]のように指定することで、末尾から符号を除いた部分までを逆順に取り出せます。

実装例

それでは、理解を深めるために実際のコードを見てみましょう。

class Solution(object):
   def reverse(self, x):
      """
      :type x: int
      :rtype: int
      """
      x = str(x)
      if x[0] == '-':
         a = int('-' + x[-1:0:-1])
         if a >= -2147483648 and a <= 2147483647:
            return a
         else:
            return 0
      else:
         a = int(x[::-1])
         if a >= -2147483648 and a <= 2147483647:
            return a
         else:
            return 0

ob1 = Solution()
print(ob1.reverse(-425))

コードのポイント

  • str(x):整数を文字列に変換し、桁ごとの操作を容易にします。
  • x[-1:0:-1]:負号を除いた部分を末尾から先頭方向へ逆順に取得します。
  • x[::-1]:文字列全体を逆順にします(正の数の場合に使用)。
  • 範囲チェックにより、結果が32ビット整数の範囲を超えた場合は0を返します。

入力

print(ob1.reverse(-425))

出力

-524
  1. Pythonのbin()関数の使い方:10進数を2進数に変換する方法

    Pythonのbin()関数は、10進数の整数を2進数(バイナリ)表現の文字列に変換する組み込み関数です。引数には正の整数でも負の整数でも指定できます。構文bin()関数の基本的な構文は以下のとおりです。bin(n) 引数:変換対象となる整数 戻り値:整数またはintオブジェクトを2進数表現した文字列 例外:引数にfloat型(浮動小数点数)を渡すとTypeErrorが発生します次の例では、正の整数と負の整数をそれぞれ2進数に変換しています。結果には「0b」という接頭辞が付き、それが2進数表現であることを示します。使用例n = input(Enter an integer :") d

  2. 正の整数のビットを反転するPythonプログラムの書き方

    Pythonで正の整数のビット順を逆にするには、まず bin() 関数を使って数値を2進数に変換します。bin() は変換結果の先頭に「0b」というプレフィックスを付加するため、その最初の2文字を除外し、残りの部分を反転させます。さらに、指定されたビットサイズに合わせて、反転した文字列の末尾に0を補完します。最後に、反転した2進数の文字列を整数へと変換し直すことで、ビットが反転された値が得られます。 アルゴリズム integernumber(n, bit_size) /* n は対象の数値、bit_size はビットサイズ */ ステップ1: まず bin() 関数で数値を2進数に変換する。