Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra chuỗi có chứa chuỗi giảm dần liên tiếp hay không trong Python

Giả sử chúng ta có một chuỗi s với một số chữ số, chúng ta phải kiểm tra xem nó có chứa các số nguyên giảm dần liên tiếp hay không.

Vì vậy, nếu đầu vào là s =​​"99989796", thì đầu ra sẽ là True, vì chuỗi này đang giữ [99,98,97,96]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau−

  • Định nghĩa một hàm trợ giúp (). Điều này sẽ chiếm vị trí, pres_num

  • nếu pos giống với n thì

    • trả về True

  • num_digits:=số lượng chữ số của trước_num

  • đối với tôi trong phạm vi num_digits - 1 đến num_digits, thực hiện

    • nếu s [từ vị trí chỉ mục đến pos + i-1] và dạng số của s [từ vị trí chỉ mục đến pos + i-1]) giống như pres_num - 1, thì

      • if helper (pos + i, prev_num - 1), then

      • trả về True

    • trả về Sai

    • Từ phương thức chính, hãy thực hiện như sau−

    • n:=kích thước của s

    • đối với tôi trong phạm vi từ 1 đến thương số của n / 2, hãy thực hiện

      • num:=dạng số của s [từ chỉ mục 0 đến i-1]

      • nếu helper (i, num) là true, thì

      • trả về True

    • trả về Sai

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

"99989796"

Đầu ra

True