力扣题目学习—字符串压缩

   字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

在这里插入图片描述

代码一:

class Solution: 
   def compressString(self, S: str) -> str:        
     ans = " "        
     S += " "        
     count = 1        
     for i in range(1, len(S)):            
       if S[i] != S[i-1]:                
          ans += S[i-1] + str(count)                
          count = 1            
       else:                
          count += 1        
     return ans if len(ans) < len(S)-1 else S[:-1]

作者:theBestOne
链接:https://leetcode-cn.com/problems/compress-string-lcci/solution/javaliang-chong-jie-fa-onfu-za-du-by-thebestone/

如示例一中,aabcccccaaa,首先count=1,i为[1,2,3,4,5,6,7,8,9,10,11],第一次循环中,判断S[1]是否等于S[0],此处为等于,count自加1,第二次判断S[2]是否等于S[1],此处为不等于,则ans等于(S[0]也就是a)加上 输出为字符串的count,并使count恢复为1。循环结束后判断长度。

代码二:

class Solution:
    def compressString(self, S: str) -> str:
        if len(S)==0 :
            return ""
        
        ans = ""
        prev = S[0]
        num = 0
        for i in range(len(S)):
            if S[i] == prev:
                num += 1
            else:
                ans += (prev + str(num))
                num = 1
                prev = S[i]
        
        ans += (prev + str(num))
        
        if len(ans) >= len(S):
            return S
        else:
            return ans

作者:clay001
链接:https://leetcode-cn.com/problems/compress-string-lcci/solution/jian-dan-luo-ji-pan-duan-by-clay001/

循环方式相同。多了一个判断初始字符串是否为0

发布了19 篇原创文章 · 获赞 0 · 访问量 406

猜你喜欢

转载自blog.csdn.net/MercuryG/article/details/104908617
今日推荐