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

โปรแกรมตรวจสอบสตริงมีสตริงจากมากไปน้อยติดต่อกันหรือไม่ในPython


สมมติว่าเรามีสตริง s ที่มีตัวเลขอยู่บ้าง เราต้องตรวจสอบว่ามีตัวเลขจากมากไปหาน้อยติดต่อกันหรือไม่

ดังนั้น หากอินพุตเป็น s ="99989796" ผลลัพธ์จะเป็น True เนื่องจากสตริงนี้มีค่า [99,98,97,96]

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

  • กำหนดฟังก์ชั่น helper() นี่จะใช้เวลา pos, prev_num

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

    • คืนค่า True

  • num_digits :=จำนวนหลักของ prev_num

  • สำหรับฉันอยู่ในช่วง num_digits - 1 ถึง num_digits ทำ

    • ถ้า s[จากดัชนี pos ถึง pos+i-1] และรูปแบบตัวเลขของ s[จากดัชนี pos ถึง pos+i-1]) เหมือนกับ prev_num - 1 ดังนั้น

      • ถ้าตัวช่วย (pos + i, prev_num - 1) แล้ว

      • คืนค่า True

    • คืนค่าเท็จ

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

    • n :=ขนาดของ s

    • สำหรับผมอยู่ในช่วง 1 ถึงผลหารของ n/2 ทำ

      • num :=รูปแบบตัวเลขของ s[จากดัชนี 0 ถึง i-1]

      • ถ้า helper(i, num) เป็นจริง

      • คืนค่า True

    • คืนค่าเท็จ

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

ตัวอย่าง

class Solution:
def solve(self, s):
   n = len(s)
   def helper(pos, prev_num):
   if pos == n:
      return True
   num_digits = len(str(prev_num))
   for i in range(num_digits - 1, num_digits + 1):
      if s[pos:pos+i] and int(s[pos:pos+i]) == prev_num - 1:
         if helper(pos + i, prev_num - 1):
            return True
      return False
   for i in range(1, n//2 + 1):
      num = int(s[:i])
   if helper(i, num):
      return True
   return False
ob = Solution()
s = "99989796"
print(ob.solve(s))

อินพุต

"99989796"

ผลลัพธ์

True