• [ 力扣活动0316 ] 面试题 01.06. 字符串压缩


    <>

    题目描述


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

    示例1:

     输入:"aabcccccaaa"
     输出:"a2b1c5a3"
    

    示例2:

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

    提示:

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

    我的思路 


    快慢指针扫描字符串

    出现一样的字符就统计相同的字符个数

    class Solution(object):
        def compressString(self, S):
            """
            :type S: str
            :rtype: str
            """
            ss = S + "0"
            ans = ""
            count = 1
            idx , fast = 0 , 1
            while idx<=len(ss):
                if fast>len(ss)-1:
                    idx+=1
                    continue
                if ss[fast] == ss[idx]:
                    count+=1
                    fast+=1
                else:
                    ans += ss[idx]+str(count)
                    idx = fast
                    fast+=1
                    count=1
            if len(ans)>= len(S):
                return S
            return ans

    小结:

    题解 


     1.用ch来记录当前要压缩的字符

    class Solution:
        def compressString(self, S: str) -> str:
            if not S:
                return ""
            ch = S[0]
            ans = ''
            cnt = 0
            for c in S:
                if c == ch:
                    cnt += 1
                else:
                    ans += ch + str(cnt)
                    ch = c
                    cnt = 1
            ans += ch + str(cnt)
            return ans if len(ans) < len(S) else S

    总结


     1. 题解用用额外变量来记录当前要压缩的字符,省掉双指针遍历的麻烦。

  • 相关阅读:
    CSS 备忘
    header操作cookie
    定时器传参数
    Display 和Visible 区别
    php 笔记
    概要设计要求
    iOS 之 UITextView
    iOS 按钮设置图片和事件
    iOS 设置控件圆角、文字、字体
    iOS 之 UIScrollView
  • 原文地址:https://www.cnblogs.com/remly/p/12502262.html
Copyright © 2020-2023  润新知