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.
思路: 一个数字A连续出现N次,就读成”NA”,
实现如下:
class Solution {
public:
//int to string
string tostr(int c){
stringstream ss;
ss<<c;
return ss.str();
}
//char to string
string ctostr(char c){
stringstream ss;
ss<<c;
return ss.str();
}
string countAndSay(int n) {
string s="1";
for(int i=2;i<=n;i++){
char last='A';//不是'0'-'9'的字符即可
int cnt=0;//记录last出现的次数
string r="";
for(int j=0;j<s.length();j++){
if(last=='A'){
last=s[j];
cnt=1;
}else if(last==s[j]){//重复,+1
cnt++;
}else{
r+=tostr(cnt);
r+=ctostr(last);
cnt=1;
last=s[j];
}
}
r+=tostr(cnt);//important
r+=ctostr(last);//important
s=r;
}
return s;
}
};
本文详细介绍了如何实现计数与说法序列算法,并通过实例展示了其核心逻辑。从简单的字符串操作入手,逐步深入理解并实现算法,最终生成指定序列的第n项。
477

被折叠的 条评论
为什么被折叠?



