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的i,執行:
如果s[從索引pos到pos+i-1]以及s[從索引pos到pos+i-1]的數字形式等於prev_num - 1,則
如果helper(pos + i, prev_num - 1)為真,則
返回True
返回False
在主方法中,執行以下操作:
n := s的長度
對於範圍從1到n/2的商的i,執行:
num := s[從索引0到i-1]的數字形式
如果helper(i, num)為真,則
返回True
返回False
讓我們看下面的實現以更好地理解:
示例
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
廣告