檢查Python中是否可以將一個字串轉換為另一個字串


假設我們有兩個字串s和t,t是大寫的。我們必須檢查是否可以透過執行以下操作將s轉換為t。

  • 將一些小寫字母轉換為大寫。
  • 刪除所有小寫字母。

因此,如果輸入類似於s = "fanToM",t = "TOM",則輸出將為True,因為我們可以將'o'更改為'O',然後刪除s中所有其他小寫字母以使其成為t。

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

  • n := s的長度,m := t的長度
  • dp:= 一個大小為(m + 1)x(n + 1)的矩陣,並填充為False
  • dp[0, 0] := True
  • 對於範圍從0到s的長度-1的i,執行:
    • 對於範圍從0到t的長度的j,執行:
      • 如果dp[i, j]為True,則:
        • 如果j < t的長度並且s[i]的大寫形式與t[j]相同,則:
          • dp[i + 1, j + 1] := True
        • 如果s[i]不是大寫,則:
          • dp[i + 1, j] := True
  • 返回dp[n, m]

示例

讓我們看看下面的實現來更好地理解:

 線上演示

def solve(s,t):
   n = len(s)
   m = len(t)
   dp= [[False for i in range(m+1)] for i in range(n+1)]
   dp[0][0] = True
   for i in range(len(s)):
      for j in range(len(t)+1):
         if dp[i][j] == True:
            if j < len(t) and (s[i].upper() == t[j]):
               dp[i + 1][j + 1] = True
            if s[i].isupper()==False:
               dp[i + 1][j] = True
   return dp[n][m]
s = "fanToM"
t = "TOM"
print(solve(s, t))

輸入

"fanToM", "TOM"

輸出

True

更新於:2021年1月19日

360 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告