C++实现LeetCode(38.计数和读法)

 更新时间:2021年07月14日 17:10:38   作者:Grandyang  
这篇文章主要介绍了C++实现LeetCode(38.计数和读法),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

[LeetCode] 38. Count and Say 计数和读法

The count-and-say sequence is the sequence of integers with the first five terms as following:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.

Given an integer n where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

Example 1:

Input: 1
Output: "1"

Example 2:

Input: 4
Output: "1211"

这道计数和读法问题还是第一次遇到,看似挺复杂,其实仔细一看,算法很简单,就是对于前一个数,找出相同元素的个数,把个数和该元素存到新的 string 里。代码如下:

class Solution {
public:
    string countAndSay(int n) {
        if (n <= 0) return "";
        string res = "1";
        while (--n) {
            string cur = "";
            for (int i = 0; i < res.size(); ++i) {
                int cnt = 1;
                while (i + 1 < res.size() && res[i] == res[i + 1]) {
                    ++cnt;
                    ++i;
                }
                cur += to_string(cnt) + res[i];
            }
            res = cur;
        }
        return res;
    }
};

打印出了前 12 个数字,发现一个很有意思的现象,不管打印到后面多少位,出现的数字只是由 1, 2 和3 组成,前十二个数字如下:

1
1 1
2 1
1 2 1 1
1 1 1 2 2 1
3 1 2 2 1 1
1 3 1 1 2 2 2 1
1 1 1 3 2 1 3 2 1 1
3 1 1 3 1 2 1 1 1 3 1 2 2 1
1 3 2 1 1 3 1 1 1 2 3 1 1 3 1 1 2 2 1 1
1 1 1 3 1 2 2 1 1 3 3 1 1 2 1 3 2 1 1 3 2 1 2 2 2 1
3 1 1 3 1 1 2 2 2 1 2 3 2 1 1 2 1 1 1 3 1 2 2 1 1 3 1 2 1 1 3 2 1 1

到此这篇关于C++实现LeetCode(38.计数和读法)的文章就介绍到这了,更多相关C++实现计数和读法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一篇文章带你使用C语言编写内核

    一篇文章带你使用C语言编写内核

    内核是操作系统最核心的内容,主要提供硬件抽象层、磁盘及文件系统控制、多任务等功能,由于其涉及非常广泛的计算机知识,很少被人们所熟悉,因而披上了一层神秘的面纱
    2021-08-08
  • 使用C语言实现模糊搜索功能

    使用C语言实现模糊搜索功能

    本文所提到的模糊搜索是指输入不完整的关键词即可查询到对应的全部准确结果。下面小编通过实例代码给大家分享使用C语言实现模糊搜索功能,感兴趣的朋友一起看看吧
    2018-08-08
  • Qt中QMainWindow使用及技巧

    Qt中QMainWindow使用及技巧

    QMainWindow是Qt框架中提供的一个主窗口类,它具有菜单栏、工具栏、状态栏等常见的GUI元素,本文就来介绍一下使用技巧,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • C++红黑树的底层实现机制详解

    C++红黑树的底层实现机制详解

    红黑树与AVL树一样,也是一种自平衡的二叉搜索树,它在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black,通过对任何一条从根到叶子的路径上各个结点着色方式的限制,本文介绍了C++红黑树的底层实现机制,需要的朋友可以参考下
    2024-08-08
  • C++ 中重载和运算符重载加号实现矩阵相加实例代码

    C++ 中重载和运算符重载加号实现矩阵相加实例代码

    这篇文章主要介绍了C++ 中重载和运算符重载加号实现矩阵相加实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • OpenCV基于背景减除实现行人计数

    OpenCV基于背景减除实现行人计数

    本文主要介绍了如何使用OpenCV C++对视频中的人流量进行统计。文中的示例代码讲解详细,对我们学习OpenCV有一定的帮助,需要的可以了解一下
    2022-01-01
  • C/C++ Qt TabWidget 实现多窗体创建详解

    C/C++ Qt TabWidget 实现多窗体创建详解

    TabWidget组件配合自定义Dialog组件,可实现一个复杂的多窗体分页结构。这篇文章就主要介绍了如何通过TabWidget实现多窗体的创建,感兴趣的小伙伴可以了解一下
    2021-12-12
  • C 语言基础----详解C中的运算符

    C 语言基础----详解C中的运算符

    这篇文章主要介绍了C语言中的运算符,文中讲解非常详细,适合初学小白进行学习,想入门C语言的朋友不妨了解下
    2020-06-06
  • C++利用多态实现职工管理系统(项目开发)

    C++利用多态实现职工管理系统(项目开发)

    这篇文章主要介绍了C++利用多态实现职工管理系统(项目开发),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • C语言的模板与泛型编程你了解吗

    C语言的模板与泛型编程你了解吗

    这篇文章主要为大家详细介绍了C语言的模板与泛型编程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论