题目描述: 数数并说
数数并说序列是一个整数序列,第二项起每一项的值为对前一项的计数,其前五项如下:
1. 1 2. 11 3. 21 4. 1211 5. 111221
1
被读作 "一个一"
即 11
。11
被读作 "两个一"
即 21
。21
被读作 "一个二
和 一个一"
即 1211
。
给一个正整数 n ,输出数数并说序列的第 n 项。
注意:该整数序列的每项都输出为字符串。
例 1:
输入: 1 输出: "1"
例 2:
输入: 4 输出: "1211"
解题思路:
判断有几个连续的数。
代码:
class Solution {
public:
string countAndSay(int n) {
string s1 = "1", s2 ="";
while(--n) {
for(int i = 0 ; i < s1.size() ; i ++) {
for(int j = 0 ; ; j++) {
if(i+j<s1.size()&&s1[i+j] == s1[i+j+1]) continue;
j ++;
s2 = s2 + to_string(j) +s1[i];
i = i + j-1;
break;
}
}
s1 = s2;
s2 = "";
}
return s1;
}
};