地址
https://leetcode-cn.com/problems/count-and-say/
描述
思想
迭代次数
输入:n = 4
输出:“1211”
解释:
countAndSay(1) = “1”
countAndSay(2) = 读 “1” = 一 个 1 = “11” 1次
countAndSay(3) = 读 “11” = 二 个 1 = “21” == 2次==
countAndSay(4) = 读 “21” = 一 个 2 + 一 个 1 = “12” + “11” = “1211” 3次
由上面的例子我们可知,从n=1~n=4需要进行三次(n-1)迭代变换
迭代过程
起始的字符串给定为"1"
每次都找出连续的最多相同字符,先描述字符的数量,再描述字符
比如222 ===> 3(数量)2(字符)
思路
正确
错误
错的看看就行
代码
class Solution {
public:
string countAndSay(int n) {
string s="1";
//进行n-1次迭代
for(int i=0;i<n-1;i++){
//一次迭代完毕后的字符串
string t;
//开始描述前一项
for(int j=0;j<s.size();){
int k=j+1;
//找出连续的相同字符
while(k<s.size()&&s[k]==s[k-1]) k++;
//k-j 字符串的长度,s[j]对应的字符
t+=to_string(k-j)+s[j];
j=k;
}
s=t;
}
return s;
}
};