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