在 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.