สมมติว่าเรามีเลขจำนวนเต็มแบบ 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