Inversarea cifrelor unui număr întreg în Python [duplicate] (Programare, Python)

casillas a intrebat.

Având în vedere un întreg semnat pe 32 de biți, inversați cifrele unui întreg.

Exemplul 1:

Intrare: 123Output: 321

Exemplul 2:

Intrare: -123Scoate: -321

Exemplul 3:

Intrare: 120Scoatere: 21

Să presupunem că avem de-a face cu un mediu care poate stoca numai numere întregi în intervalul numerelor întregi cu semn pe 32 de biți: [-2^31, 2^31 – 1]. În scopul acestei probleme, presupunem că funcția dumneavoastră returnează 0 atunci când numărul întreg inversat se suprapune.

Încerc să rezolv problema de inversare a numărului întreg inversat, dar următoarea soluție a eșuat cu următoarea intrare.

Intrare: 1534236469

Ieșire: 9646324351

Așteptat: 0

În soluția mea, verific dacă int dat este sau nu mai mare decât valoarea max sau min, apoi verific dacă este sau nu negativ.

Soluția mea

import sys
class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x <sys.maxsize-1  or x > -sys.minsize:

            if str(x)[0] == '-':
                list_mod = list(str(x))
                list_mod.pop(0)
                list_mod.append('-')
                list_mod.reverse()
                join_list = ''.join(list_mod[:])
                return int(join_list)
            else:
                return int(str(x)[::-1])
        else:
            return 0

Comentarii

  • Testați – și respingeți – prea devreme. 1534236469 se potrivește într-un int cu semn, dar inversul său nu se potrivește. –  > Por Jongware.
  • @usr2564301, atunci cum ar trebui să gestionez această situație. –  > Por casillas.
  • Poate originalul să nu treacă acest test? Atunci testați înainte (așa cum faceți dumneavoastră). Dar testați și după inversare. Dar, apropo, nu sunt prea sigur că testați corect. –  > Por Jongware.
1 răspunsuri
Rakesh

Încearcă să convertești int în string, , apoi reverse și apoi convertiți-l în int.

Ex:

a = 1534236469
print(int(str(a)[::-1]))

Ieșire:

9646324351

Pentru a gestiona numărul negativ:

if str(a).startswith("-"):
    a = a[1:]
    print("-{0}".format(int(str(a)[::-1])))
else:
    print(int(str(a)[::-1]))

Comentarii

  • Valoarea așteptată trebuie să fie 0. 9646324351 nu este int. –  > Por casillas.
  • Puteți folosi acest link pentru a testa dacă int este 32bit stackoverflow.com/questions/11928669/… –  > Por Rakesh.

Tags: