【LeetCode】【字符串】题号:*38. 外观数列

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

0. 前言

冲冲冲

1. 字符串

在这里插入图片描述

1.1 题目

在这里插入图片描述

1.2 代码

class Solution:
    def countAndSay(self, n: int) -> str:
        """迭代"""

        strs = '1'  # 第一个字符
        # 余下的n-1
        for i in range(n - 1):
            last_str = ''  # 上一步的字符
            i = 0  # 起始索引

            j = len(strs)  # 当前字符的长度
            count = 1

            while i < j - 1:  # 当前数和下一个数比较,下一个数为i+1<=len(s)-1  => i<= len(s)-2 => i<len(s)-1

                # 当前字符与下一个字符相同
                if strs[i] == strs[i + 1]:
                    count += 1  # 数量+1
                    i += 1  # 索引+1
                else:
                    # 上一步的字符+当前字符数量+当前字符 -> 组成下一个字符
                    last_str = last_str + str(count) + strs[i]
                    count = 1  # 数量归1
                    i += 1  # 索引+1
            # 统计最后一个字符
            strs = last_str + str(count) + strs[i]

        return strs

    

1.3 结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39190382/article/details/119522432