สมมติว่าเรามีเลขจำนวนเต็มแบบ 32 บิตที่มีลายเซ็น เราต้องใช้ตัวเลขและกลับหลัก ดังนั้นหากตัวเลขเช่น 425 ผลลัพธ์จะเป็น 524 อีกสิ่งหนึ่งที่เราต้องจำไว้คือตัวเลขนั้นถูกเซ็นชื่อแล้ว ดังนั้นอาจมีตัวเลขติดลบอยู่บ้าง ดังนั้นหากตัวเลขคือ –425 ก็จะเป็น –524
ที่นี่เรามีสมมติฐานบางอย่าง เราคิดว่าเรากำลังใช้ในโดเมนของจำนวนเต็มที่ลงนามแบบ 32 บิต ดังนั้นช่วงจะเป็น [-232 ถึง 232 – 1] ดังนั้นหากตัวเลขไม่อยู่ในช่วง ฟังก์ชันจะคืนค่า 0
เพื่อแก้ปัญหานี้ เราจะใช้รหัสหลาม ขั้นแรกเราจะแปลงจำนวนเต็มที่กำหนดให้เป็นสตริง ดังนั้นหากอักขระตัวแรกในสตริงคือ '-' แสดงว่าตัวเลขนั้นเป็นจำนวนลบ ดังนั้นให้ย้อนกลับจากดัชนี 1 เป็นความยาวดัชนี – 1 และสุดท้ายแปลงเป็นจำนวนเต็มก่อนที่จะส่งคืน สำหรับจำนวนบวก เพียงย้อนกลับสตริงและ ทำให้เป็นจำนวนเต็มก่อนที่จะกลับ ในแต่ละกรณี เราจะตรวจสอบว่าตัวเลขอยู่ในช่วงของจำนวนเต็ม 32 บิตหรือไม่ หากเกินช่วง ก็คืนค่า 0
มาดูการใช้งานกันให้เกิดความเข้าใจกันมากขึ้น
ตัวอย่าง
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)) อินพุต
print(ob1.reverse(-425))
ผลลัพธ์
-524