重点是:找出连续相同的数的每一段
class Solution {
public:
string countAndSay(int n) {
string s = "1"; // 第一项 = "1"是规定好的
for (int i = 0; i < n - 1; i ++) { // 求第n项,需变换n-1次
string t; //用t表示新的一项
for (int j = 0; j < s.size();) { // 找到前一项每一段相同的数
int k = j + 1; //k从j+1开始找
while (k < s.size() && s[k] == s[j]) k ++; // 相同则k往后走,结束后k和j之间的部分就是相同的数
t += to_string(k - j) + s[j]; //2个1: "21", 这种形式
j = k;
}
s = t; // 最后把s更新成t
}
return s;
}
};