题目:
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.
Subscribe to see which companies asked this question.
浪费了点时间,count搞错了。要注意使用的时候是使用变化之前的还是变化之后的。
贴代码
class Solution {
public:
string countAndSay(int n) {
string outstring = "1";
for(int i = 0; i < n-1; ++ i){
outstring = Sayout(outstring);
}
return outstring;
}
string Sayout(string s){
string sout;
char nowchar, prechar;
prechar = '*';
int count = 0;
if(s.size() == 1){
return "11";
}
for(int i = 0; i < s.size(); ++i){
nowchar = s[i];
if(nowchar != prechar){
if(prechar != '*'){
sout += (to_string(count)+prechar);
}
count = 1;
prechar = nowchar;
}else{
count++;
}
}
sout += (to_string(count)+s[s.size()-1]);
return sout;
}
};