题解 | #压缩牛群编号#

压缩牛群编号

https://www.nowcoder.com/practice/db9dd240e5f54b6d8eeadfbd9b7f865f

  • 题目考察的知识点 : 字符串
  • 题目解答方法的文字分析:
  1. 使用双指针法遍历原始字符数组 chars,对于每组连续相同字符:
  2. 记录该组连续相同字符的数量 count;如果 count 等于 1,则将当前字符直接拷贝到新的字符数组中;否则,将当前字符和 count 转换成的字符数组依次拷贝到新的字符数组中
  • 本题解析所用的编程语言: Python
  • 完整且正确的编程代码

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param chars char字符型一维数组
# @return char字符型一维数组
#
class Solution:
    def compress(self, chars: List[str]) -> List[str]:
        n = len(chars)  # 原始字符数组长度
        writeIndex = 0  # 新的字符数组写入位置
        count = 1  # 记录连续相同字符的数量

        for i in range(1, n):
            if chars[i] == chars[i - 1]:
                count += 1
            else:
                chars[writeIndex] = chars[i - 1]  # 将前一个字符拷贝到新的字符数组中
                writeIndex += 1
                if count > 1:
                    # 如果当前字符连续出现次数大于1,则将其压缩成字符+数量的形式
                    countStr = str(count)
                    for ch in countStr:
                        chars[writeIndex] = ch
                        writeIndex += 1
                count = 1  # 重置计数器

        # 处理最后一个字符
        chars[writeIndex] = chars[n - 1]
        writeIndex += 1
        if count > 1:
            countStr = str(count)
            for ch in countStr:
                chars[writeIndex] = ch
                writeIndex += 1

        # 返回新的字符数组长度
        return chars[0:writeIndex]
牛客高频top202题解系列 文章被收录于专栏

记录刷牛客高频202题的解法思路

全部评论

相关推荐

牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务