在 Python 中查找其字符可以重新排列以形成给定单词的子字符串的数量


假设我们有一个字符串 S(所有字母都小写),我们需要找到所有长度为四的子字符串的数量,这些子字符串的字符可以重新排列以形成这个单词“bird”。

因此,如果输入类似于“birdb”,则输出将为 2。

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

  • cnt := 0

  • 对于 i 从 0 到 s 的大小 - 3,执行

    • bird := 一个数组,值为 [0, 0, 0, 0]

    • 对于 j 从 i 到 i + 4,执行

      • 如果 s[j] 与 'b' 相同,则

        • bird[0] := bird[0] + 1

      • 否则,如果 s[j] 与 'i' 相同,则

        • bird[1] := bird[1] + 1

      • 否则,如果 s[j] 与 'r' 相同,则

        • bird[2] := bird[2] + 1

      • 否则,如果 s[j] 与 'd' 相同,则

        • bird[3] := bird[3] + 1

      • 如果 bird 与 [1,1,1,1] 相同,则

        • cnt := cnt + 1

  • 返回 cnt

示例

让我们看看以下实现以获得更好的理解:

实时演示

def number_of_occurrence(s):
   cnt = 0
   for i in range(0, len(s) - 3):
      bird = [0, 0, 0, 0]
      for j in range(i, i + 4):
         if s[j] == 'b':
            bird[0] += 1
         elif s[j] == 'i':
            bird[1] += 1
         elif s[j] == 'r':
            bird[2] += 1
         elif s[j] == 'd':
            bird[3] += 1
      if bird == [1,1,1,1]:
         cnt += 1
   return cnt
s = "birdb"
print(number_of_occurrence(s))

输入

"birdb"

输出

2

更新于: 2020-08-19

215 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告