檢查Python中字串是否可以透過遞迴刪除給定子字串變為空


假設我們有兩個字串 s 和 t。我們可以任意次數地從 s 中刪除 t。並且 t 每次只出現一次。我們必須檢查 s 是否可以透過儘可能多次刪除 t 而變為空。

因此,如果輸入類似於 s = "pipipinnn" t = "pin",則輸出將為 True,因為我們可以從 "pipipinnn" 中刪除 "pin",然後我們將得到 "pipinn",再次刪除 "pin" 以獲得字串 "pin",然後將其刪除以使其為空。

為了解決這個問題,我們將遵循以下步驟:

  • 當 s 的大小 > 0 時,執行
    • position := t 在 s 中的起始索引
    • 如果 position 不在 s 中,則
      • 退出迴圈
    • s := 從 s 中刪除一次 t
  • 當 s 的大小等於 0 時返回 true,否則返回 false

讓我們看看以下實現以獲得更好的理解:

示例

 現場演示

def solve(s, t):
   while len(s) > 0:
      position = s.find(t)
      if position == -1:
         break
      s = s.replace(t, "", 1)
   return len(s) == 0
s = "pipipinnn"
t = "pin"
print(solve(s, t))

輸入

"pipipinnn", "pin"

輸出

True

更新於: 2020-12-29

334 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.