38.报数

class Solution:
    def countAndSay(self, n: int) -> str:
        seq = "1"
        for i in range(n-1):
            seq = self.getNext(seq)
        return seq

    def getNext(self, seq):
        i, next_seq = 0, ‘‘
        while i < len(seq):
            count = 1
            while i+1 <len(seq) and seq[i] == seq[i+1]:
                count += 1
                i += 1
            next_seq += str(count) + seq[i]
            i += 1
        return next_seq

原文地址:https://www.cnblogs.com/WJZheng/p/11401928.html

时间: 2024-10-10 21:53:52

38.报数的相关文章

C#刷遍Leetcode面试题系列连载(2): No.38 - 报数

目录 前言 题目描述 相关话题 相似题目 解题思路: 运行结果: 代码要点: 参考资料: 文末彩蛋 前言 前文传送门: C# 刷遍 Leetcode 面试题系列连载(1) - 入门与工具简介 上篇文章中我们主要科普了刷 LeetCode 对大家的作用,今天咱们就正式进行 LeetCode 算法题分析.很多人都知道计算机中有种思想叫 递归,相应地也出现了很多算法.解决递归问题的要点有如下几个: 找出递归的关系 比如,给个数列 f(n),常见的递归关系是后面的项 f(n+1)与前面几项之间的关系,比

【leetcode算法-简单】38. 报数

[题目描述] 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 12. 113. 214. 12115. 1112211 被读作  "one 1"  ("一个一") , 即 11.11 被读作 "two 1s" ("两个一"), 即 21.21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一&

【LeetCode】38.报数

class Solution { public: string countAndSay(int n) { string str,ans; str="1"; if(n--==1) return str; while(n--){ ans.clear(); int left=0,right=0; while(right<str.size()){ if(str[right]==str[left]) right++; else{ ans+=(right-left+'0'); ans+=st

? 38. 报数-LeetCode

心得:效果不理想,后期还会改进 1 class Solution { 2 public String countAndSay(int n) { 3 String str="1"; 4 for(int i=2;i<=n;i++) 5 { 6 char[] s=String.valueOf(str).toCharArray(); 7 str=""; 8 int index=1; 9 for(int j=0;j<s.length;j++) 10 { 11 if

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

算法week4

35# 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置.你可以假设数组中无重复元素. 思路:遍历数组,找到目标值或发现第一个大于目标值的值,则返回当前位置,未找到则返回数组长度 class Solution { public int searchInsert(int[] nums, int target) { int i = 0; while(i<nums.length){ if(nums[i]>=targe

C#刷遍Leetcode面试题系列连载(5):No.593 - 有效的正方形

上一篇 LeetCode 面试题中,我们分析了一道难度为 Easy 的数学题 - 自除数,提供了两种方法.今天我们来分析一道难度为 Medium 的面试题. 系列教程索引 传送门:https://enjoy233.cnblogs.com/articles/leetcode_csharp_index.html C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - 报数 C# 刷遍 Leetcode 面试题系列连载(3):

LeetCode(38): 报数

Easy! 题目描述: 报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作  "one 1"  ("一个一") , 即 11.11 被读作 "two 1s" ("两个一"), 即 21.21 被读作 "one 2",  "one 1" ("一个二" , 

leetcode第38题:报数

这是一道简单题,但是我做了很久,主要难度在读题和理解题上. 思路:给定一个数字,返回这个数字报数数列.我们可以通过从1开始,不断扩展到n的数列.数列的值为前一个数列的count+num,所以我们不断叠加来完成. class Solution: def countAndSay(self, n: int) -> str: # 第一个值直接赋予 pre_num = "1" for i in range(1,n): # 用next_num 记录当前序列,num为前一个序列的第一个值 ne