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 convert(string str) { stringstream F; char last=str[0]; int count=1; for(int j=1;j<=str.size();++j) { if(str[j]==last) count++; else { F<<count<<last; last=str[j]; count=1; } } return F.str(); } string countAndSay(int n) { string stri=""; if(n<=0) return stri; string str="1"; for(int i=1;i<n;++i) { str=convert(str); } return str; } };
题意是n=1时输出字符串1;n=2时,数上次字符串中的数值个数,因为上次字符串有1个1,所以输出11;n=3时,由于上次字符是11,有2个1,所以输出21;n=4时,由于上次字符串是21,有1个2和1个1,所以输出1211。依次类推,写个countAndSay(n)函数返回字符串。