在 Python 中检查每个 a 组后面是否都跟着一个长度相同的 b 组


假设我们有一个只包含两个字符 a 和 b 的小写字符串 s。我们必须检查每个连续的 a 组后面是否都跟着一个长度相等的连续的 b 组。

因此,如果输入类似于 s = "abaaabbbaabbaabbab",则输出将为 True,因为所有组为 (ab)、(aaabbb)、(aabb)、(aabb)、(ab)。

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

  • a_count := 0,string_len := s 的大小
  • i := 0
  • 当 i < string_len 时,执行以下操作:
    • 当 i < string_len 且 s[i] 为 'a' 时,执行以下操作:
      • a_count := a_count + 1
      • i := i + 1
    • 当 i < string_len 且 s[i] 为 'b' 时,执行以下操作:
      • a_count := a_count - 1
      • i := i + 1
    • 如果 a_count 不为 0,则:
      • 返回 False
  • 返回 True

示例

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

 实时演示

def solve(s):
   a_count = 0
   string_len = len(s)
   i = 0
   while i < string_len:
      while i < string_len and s[i] == 'a':
         a_count += 1
         i += 1
      while i < string_len and s[i] == 'b':
         a_count -= 1
         i += 1
      if a_count != 0:
         return False
   return True
s = "abaaabbbaabbaabbab"
print(solve(s))

输入

"abaaabbbaabbaabbab"

输出

True

更新于: 2021年1月18日

106 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告