Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาตัวเลขกลับด้านของความยาว n ใน Python


สมมติว่าเรามีค่า n เราต้องหาจำนวนกลับหัวของความยาว n ขณะที่เราผูกปม ตัวเลขกลับหัวจะเป็นตัวเลขที่เหมือนกันเมื่อพลิก 180 องศา

ดังนั้น หากอินพุตเป็น n =2 เอาต์พุตจะเป็น ['11', '69', '88', '96']

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน middle() นี่จะใช้เวลา x

  • ถ้า x เป็น 0 แล้ว

    • กลับรายการสตริงว่าง

  • ถ้า x เท่ากับ 1 แล้ว

    • กลับรายการองค์ประกอบใหม่ 0, 1, 8

  • ret :=รายการใหม่

  • กลาง :=กลาง (x − 2)

  • สำหรับแต่ละเมตรในช่วงกลางทำ

    • ถ้า x ไม่เหมือนกับ n แล้ว

      • แทรก ("0" concatenate m concatenate "0") ที่ส่วนท้ายของ ret

    • แทรก ("1" concatenate m concatenate "1") ที่ส่วนท้ายของ ret

    • แทรก ("6" concatenate m concatenate "9") ที่ส่วนท้ายของ ret

    • แทรก ("8" concatenate m concatenate "8") ที่ส่วนท้ายของ ret

    • แทรก ("9" concatenate m concatenate "6") ที่ส่วนท้ายของ ret

  • รีเทิร์น

  • จากวิธีหลัก ให้ทำดังนี้ −

  • ถ้า n เป็น 0 แล้ว

    • กลับรายการใหม่

  • มิฉะนั้นจะส่งคืนรายการที่เรียงลำดับของ Middle(n)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, n):
      if not n:
         return []
      def middle(x=n):
         if not x:
            return [""]
         if x == 1:
            return list("018")
         ret = []
         mid = middle(x - 2)
         for m in mid:
            if x != n:
               ret.append("0" + m + "0")
            ret.append("1" + m + "1")
            ret.append("6" + m + "9")
            ret.append("8" + m + "8")
            ret.append("9" + m + "6")
         return ret
      return sorted(middle())
ob = Solution()
print(ob.solve(2))

อินพุต

2

ผลลัพธ์

['11', '69', '88', '96']