思路:
1. 1
2. 11
3. 21
4. 1211
5. 111221
6. 312211
7. 13112221
规律是下面一行在读取上一行数字
- 给一个数,这个数是1
- 描述上一步的数,这个数是 1 即一个1,故写作11
- 描述上一步的数,这个数是11即两个1,故写作21
- 描述上一步的数,这个数是21即一个2一个1,故写作12-11
- 描述上一步的数,这个数是1211即一个1一个2两个1,故写作11-12-21
代码:
class Solution {
public:
string countAndSay(int n) {
string s="1";
for(int i=0;i<n-1;i++) //循环到第几步
{
string ns;
for(int j=0;j<s.size();j++) //遍历字符串长度
{
int k=j;
while(k<s.size() && s[k]==s[j]) k++; //遍历相同数字并进行累加
ns +=to_string(k-j)+s[j]; //to_string 是将int型转换为string 类型
j=k-1;
}
s=ns;
}
return s;
}
};
Every step of barefoot running deserves to be recorded