每日一题-16

题目描述

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

示例1:

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

输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
提示:

字符串长度在[0, 50000]范围内。


解题思路

1.直接循环一次字符串即可。
2.还是循环一次,利用双指针移动。


代码

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

        return s if len(s)<len(S) else S
全部评论

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务