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

本文共 1258 字,大约阅读时间需要 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里。代码如下:

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 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

参考资料:

本文转自博客园的博客,原文链接:

,如需转载请自行联系原博主。

你可能感兴趣的文章
Swift iOS : 模糊化
查看>>
Android 应用防止被二次打包指南
查看>>
高级篇:独立开发者 5 分钟入门 ASO
查看>>
深度有趣 | 18 二次元头像生成
查看>>
Android P 凹口屏支持,打造全面屏体验
查看>>
小白聊「区块链」
查看>>
源码|并发一枝花之CopyOnWriteArrayList
查看>>
循环神经网络
查看>>
从JDK源码角度看Long
查看>>
你不曾见过的酷炫地图可视化作品(一)
查看>>
二线城市疯狂抢人,技术人才何去何从?
查看>>
如果想成为一名顶尖的前端,这份书单你一定要收藏!
查看>>
iOS Swift UISearchController的取消按钮
查看>>
MyBatis 框架系列之基础初识
查看>>
破解微软智能手环
查看>>
Android Adobe Reader 任意代码执行分析(附POC)
查看>>
megalo -- 网易考拉小程序解决方案
查看>>
iOS 网络编程(二)UDP协议小结
查看>>
Dubbo入门(2) - 简单实践
查看>>
关于Open开头的开源技术库全面汇总,看这一篇就够了
查看>>