The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...
1
is read off as "one 1"
or 11
.
11
is read off as "two 1s"
or 21
.
21
is read off as "one 2
, then one 1"
or 1211
.
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
数下字符串的数量和值,并输出这个数量+值的组合。对于当前的字符串,遍历这个字符串,对于相同的一个子串,把子串的长度+子串的值加入到下一个字符串中。循环得到第N个序列。
class Solution {
public:
string countAndSay(int n) {
string cur="1";
int num=0;
for(int i=1;i<n;i++){
string rec="";
for(int j=0;j<cur.length();j++){
if(j==0)num=1;
else if(cur[j]==cur[j-1])num++;
else{
rec.push_back(num+'0');
rec.push_back(cur[j-1]);
num=1;
}
}
rec.push_back(num+'0');rec.push_back(cur[cur.length()-1]);
cur=rec;
}
return cur;
}
};