38 外观数列(中等)

简介:

image-20221031192750532

解题思路:从第一个一次遍历统计每个字符出现的次数以及当前字符,然后将其赋值给变量,最终将变量返回。提供C++和python的官方代码

#
# @lc app=leetcode.cn id=38 lang=python3
#
# [38] 外观数列
#

# @lc code=start
class Solution:
    def countAndSay(self, n: int) -> str:
        prev = '1'
        for i in range(n-1):
            curr = ""
            pos = 0
            start = 0

            while pos < len(prev):
                while pos < len(prev) and prev[pos] == prev[start]:
                    pos += 1
                curr += str(pos-start)+prev[start]
                start = pos
            prev = curr
        return prev

# @lc code=end
class Solution {
public:
    string countAndSay(int n) {
        string prev="1";
        for (int i=2;i<=n;++i){
            string curr="";
            int start=0;
            int pos=0;

            while(pos<prev.size()){
                while (pos<prev.size()&&prev[pos]==prev[start]){
                    pos++;
                }
                curr+=to_string(pos-start)+prev[start];
                start=pos;
            }
            prev=curr;
        }
        return prev;

    }
};
相关文章
|
1月前
Leetcode第38题(外观数列)
LeetCode第38题要求生成外观数列的第n项,该数列从数字1开始,每一项都是对前一项的描述,例如第1项是"1",第2项是"11",第3项是"21",以此类推。
27 0
|
5月前
|
人工智能 C++
组合+排列 以及伯努利装错信封问题思路
这段代码是C++实现的一个程序,用于计算从`n`个不同元素中选择`m`个进行排列的组合总数(排列问题)。用户输入`n`和`m`,程序通过循环和条件判断生成所有可能的排列,并输出排列的总数。核心逻辑是使用回溯法,当找到一个满足条件(不包含重复元素)的排列时,更新计数器并继续寻找下一个排列。
44 0
|
6月前
|
C++ Java 定位技术
C/C++每日一练(20230420) 存在重复元素II、外观数列、最优路线
C/C++每日一练(20230420) 存在重复元素II、外观数列、最优路线
115 0
C/C++每日一练(20230420) 存在重复元素II、外观数列、最优路线
|
6月前
leetcode-38:外观数列
leetcode-38:外观数列
41 0
|
6月前
|
算法
【LeetCode】31. 下一个排列【中等】
【LeetCode】31. 下一个排列【中等】
|
算法 安全 Swift
LeetCode - #38 外观数列
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
LeetCode - #38 外观数列
|
存储 Python
LeetCode 38. 外观数列
给定一个正整数 n ,输出外观数列的第 n 项。
96 0
从上到下打印二叉树 III(中等难度)
从上到下打印二叉树 III(中等难度)
82 0
从上到下打印二叉树 III(中等难度)
|
存储 算法
旋转链表(中等难度)
旋转链表(中等难度)
78 0
旋转链表(中等难度)
|
存储 算法
全排列(中等难度)
全排列(中等难度)
75 0
全排列(中等难度)