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.
题意:
生成一个string并返回。开始的时候为1,然后按照描述的规则,逐步生成。返回第n个string。
思路:
按照题的要求实现即可。遍历每一次的string,进行相关字符的计数,得到符合要求的string,一直到找到第n个string。
代码:
class Solution {
public:
string countAndSay(int n) {
if(n==0) return "";
if(n==1) return "1";
string res="11";
for(int i=2; i<n; i++){
int len=res.size();
int count=1;
string s;
for(int j=0; j<len-1; j++){
if(res[j]==res[j+1])
count++;
else{
s+=(char)(count+'0');
s+=res[j];
count=1;
}
}
if(res[len-1]!=res[len-2])
count=1;
s+=(char)(count+'0');
s+=res[len-1];
res=s;
}
return res;
}
};