LeetCode 38 外观数列[模拟] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 38 外观数列[模拟] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道看起来很麻烦,其实很简单的题目,只要看懂题目就可以了,countAndSay(n) 是对 countAndSay(n-1) 的描述,从这里就可以明白后一个数是从前一个数来的,比如n为4时,1,11,21,1211,从第二个数解释为:一个1,两个1,一个2,、一个1,是不是很简单,对于前一个数,只要固定住连续同一个数的首尾,统计长度即可,代码如下:
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;
}
};
以上是关于LeetCode 38 外观数列[模拟] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章