【LeetCode】【字符串】题号:*443. 压缩字符串

every blog every motto: You will never know unless you try

0. 前言

冲冲冲

1. 字符串

在这里插入图片描述

1.1 题目

在这里插入图片描述

1.2 代码

class Solution:
    def compress(self, chars: List[str]) -> int:
        anchor = 0  # 字符的起始位置
        writer = 0  # 记录该写位置的索引

        for current_read_index, c in enumerate(chars):

            # 当读取到下一个字符和当前字符不同或最后一个字符时
            if current_read_index + 1 == len(chars) or chars[current_read_index + 1] != c:
                # 字符起始位置写入第一个字符
                chars[writer] = chars[anchor]
                # 写入索引后移一个
                writer += 1
                # 出现大于1个的字符
                if current_read_index > anchor:
                    # 相同字符的个数 -> 转为字符串 eg:3 -> '3',13->'13'
                    for digit in str(current_read_index - anchor + 1):
                        # 写入字符个数
                        chars[writer] = digit
                        # 该写字符的索引+1
                        writer += 1
                #
                anchor = current_read_index + 1
        # print(chars)
        return writer

1.3 结果

在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_39190382/article/details/119617217
Recommended