博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Count and Say 计数和读法
阅读量:5097 次
发布时间:2019-06-13

本文共 1296 字,大约阅读时间需要 4 分钟。

 

The count-and-say sequence is the sequence of integers beginning as follows:

1, 11, 21, 1211, 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, generate the nth sequence.

Note: The sequence of integers will be represented as a string.

 

这道计数和读法问题还是第一次遇到,看似挺复杂,其实仔细一看,算法很简单,就是对于前一个数,找出相同元素的个数,把个数和该元素存到新的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组成,网上也有人发现了并分析了原因 (),前十二个数字如下:

 

11 12 11 2 1 11 1 1 2 2 13 1 2 2 1 11 3 1 1 2 2 2 11 1 1 3 2 1 3 2 1 13 1 1 3 1 2 1 1 1 3 1 2 2 11 3 2 1 1 3 1 1 1 2 3 1 1 3 1 1 2 2 1 11 1 1 3 1 2 2 1 1 3 3 1 1 2 1 3 2 1 1 3 2 1 2 2 2 13 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

 

参考资料:

 

转载于:https://www.cnblogs.com/grandyang/p/4086299.html

你可能感兴趣的文章
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
Hmailserver搭建邮件服务器
查看>>
django之多表查询-2
查看>>
快速幂
查看>>