检查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 次查看

开启您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.