天天看點

LeetCode 面試題 01.06. 字元串壓縮

題目

字元串壓縮。利用字元重複出現的次數,編寫一種方法,實作基本的字元串壓縮功能。比如,字元串aabcccccaaa會變為a2b1c5a3。若“壓縮”後的字元串沒有變短,則傳回原先的字元串。你可以假設字元串中隻包含大小寫英文字母(a至z)。

示例1:

 輸入:"aabcccccaaa"
 輸出:"a2b1c5a3"
示例2:

 輸入:"abbccd"
 輸出:"abbccd"
 解釋:"abbccd"壓縮後為"a1b2c2d1",比原字元串長度更長。           

提示:

字元串長度在[0, 50000]範圍内。

解題思路

class Solution:
    def compressString(self, S: str) -> str:
        sList = S
        if len(sList)<=1:
            return S
        tempCache = 1
        tempStr = sList[0]
        ret = ""
        for i in range(1,len(sList)):
            eachStr = sList[i]
            print(eachStr)
            if eachStr == tempStr:
                tempCache += 1
            else:

                ret = ret + tempStr + str(tempCache)
                tempCache = 1
            tempStr = eachStr
        ret = ret + tempStr + str(tempCache)
        if len(ret)>=len(sList):
            return S

        return ret           

繼續閱讀