题目
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.
思路
用迭代的方法:
class Solution {
public:
string countAndSay(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(n<1) return "";
string p="1";
string q="";
int count=1;
for(int i=2;i<=n;i++) {
q="";
for(int j=0;j<p.length();j++) {
char ch=p[j];
count=1;
while(j+1<p.length() && p[j+1]==ch){
count++;
j++;
}
char cou='0'+count;
q=q+cou+ch;
}
p=q;
}
return p;
}
};
附加:C++ 中int,char,string,CString类型转换
(1)在C标准库里面,string 转 int,使用atoi:
string text = "152";
int number = std::atoi( text.c_str() );
(2)string 转 char *
char *p = string.c_str();
......