在Python中编写计算有差异的子字符串的程序

在Python中编写计算有差异的子字符串的程序

假设我们有两个字符串s和t,我们需要找到一种方法,选择s的一个非空子串,并将其中一个单个字符替换为另一个不同的字符,以便得到的子串是t的子串之一。我们必须找到满足上述条件的子串数。

所以,如果输入是 s = “sts” t = “tsts”,那么输出将是6,因为以下是s和t的子串对,它们之间差异只有一个字符:

  • (“sts”,“tsts”)
  • (“sts”,“tsts”)
  • (“sts”,“tsts”)
  • (“sts”,“tsts”)
  • (“sts”,“tsts”)
  • (“sts”,“tsts”)

粗体字符部分是从两个字符串s和t中选择的子串。

为了解决这个问题,我们将遵循以下步骤:

  • n1:= s的大小
  • n2:= t的大小
  • ans:= 0
  • 对于s中的每个索引i1和字符c1,执行以下操作:
    • 对于t中的每个索引i2和字符c2,执行以下操作:
      • i : = i1,j: = i2
      • 当i
      • i : = i + 1,j: = j + 1
      • 如果i
      • := i + 1,j: = j + 1
      • ans:= ans + 1
      • 当i
        • i : = i + 1,j: = j + 1
        • ans:= ans + 1
  • 则返回ans

例子

让我们看下面的实现,以获得更好的理解 –

def solve(s, t):
   n1 = len(s)
   n2 = len(t)
   ans = 0

   for i1, c1 in enumerate(s):
      for i2, c2 in enumerate(t):
         i = i1
         j = i2

         while i < n1 and j < n2 and s[i] == t[j]:
            i += 1
            j += 1

         if i < n1 and j < n2 and s[i] != t[j]:
            i += 1
            j += 1
            ans += 1
            while i < n1 and j < n2 and s[i] == t[j]:
               i += 1
               j += 1
               ans += 1

   return ans

s = "sts"
t = "tsts"
print(solve(s, t))

输入

“sts”,“tsts”

输出

6

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程