在 Python 中执行字符串压缩的程序


假设我们有一个字符串 s。我们必须将其压缩为游程编码形式。因此,当某个字符连续重复 k 次(例如此处“bbbb”中的字母“b”连续重复四次)时,编码形式将为“b4”。对于单个字符,我们不应将计数添加到其中。

所以,如果输入类似于 s = "abbbaaaaaaccdaaab",那么输出将是 ab3a6c2da3b

为了解决这个问题,我们将按照以下步骤进行操作 -

  • res := 空字符串
  • cnt := 1
  • 对于范围 1 到 s - 1 中的 i,执行
    • 如果 s[i - 1] 与 s[i] 相同,则
      • cnt := cnt + 1
    • 否则,
      • res := res 连接 s[i - 1]
      • 如果 cnt > 1,则
        • res := res 连接 cnt
      • cnt := 1
  • res := res + s 的最后一个字符
  • 如果 cnt > 1,则
    • res := res 连接 cnt
  • 返回 res

示例

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

def solve(s):
   res = ""
   cnt = 1
   for i in range(1, len(s)):
      if s[i - 1] == s[i]:
         cnt += 1
      else:
         res = res + s[i - 1]
         if cnt > 1:
            res += str(cnt)
         cnt = 1
   res = res + s[-1]
   if cnt > 1:
      res += str(cnt)
   return res

s = "abbbaaaaaaccdaaab"
print(solve(s))

输入

"abbbaaaaaaccdaaab"

输出

ab3a6c2da3b

更新于: 2021-10-12

16K+ 浏览量

开启职业生涯

完成课程即可获得认证

开始
广告
© . All rights reserved.