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

更新於:2020年10月5日

248 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告